[mlpack-git] master: Merge branch 'master' into bindings (e9b2c50)

gitdub at mlpack.org gitdub at mlpack.org
Tue Nov 1 11:54:59 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/981ffa2d67d8fe38df6c699589005835fef710ea...04551164d9950dbdb3738f0c9d87e2d498fd8192

>---------------------------------------------------------------

commit e9b2c50d7b6673a914c1e2a62a5dafb6b7a74110
Merge: eb5b750 3d3d733
Author: Ryan Curtin <ryan at ratml.org>
Date:   Tue Nov 1 11:54:59 2016 -0400

    Merge branch 'master' into bindings


>---------------------------------------------------------------

e9b2c50d7b6673a914c1e2a62a5dafb6b7a74110
 CMake/GeneratePkgConfig.cmake                      |   28 +
 CMake/ModifyMatlabPathdef.cmake                    |   25 -
 CMake/mlpack.pc.in                                 |   11 +
 CMake/mlpack_coverage.in                           |    2 +
 CMakeLists.txt                                     |  143 ++-
 COPYRIGHT.txt                                      |    1 +
 HISTORY.md                                         |   13 +-
 README.md                                          |    6 +-
 doc/guide/build.hpp                                |   25 +-
 doc/guide/sample.hpp                               |    4 +-
 doc/policies/trees.hpp                             |    2 +-
 doc/tutorials/approx_kfn/approx_kfn.txt            | 1025 ++++++++++++++++++++
 .../linear_regression/linear_regression.txt        |    2 +-
 doc/tutorials/range_search/range_search.txt        |    2 +-
 doc/tutorials/tutorials.txt                        |    1 +
 src/mlpack/CMakeLists.txt                          |   24 +-
 src/mlpack/core.hpp                                |    7 +
 src/mlpack/core/data/binarize.hpp                  |    5 +
 src/mlpack/core/data/dataset_mapper.hpp            |    5 +
 src/mlpack/core/data/dataset_mapper_impl.hpp       |    5 +
 src/mlpack/core/data/extension.hpp                 |    5 +
 src/mlpack/core/data/format.hpp                    |    5 +
 .../data/imputation_methods/custom_imputation.hpp  |    5 +
 .../data/imputation_methods/listwise_deletion.hpp  |    5 +
 .../data/imputation_methods/mean_imputation.hpp    |    5 +
 .../data/imputation_methods/median_imputation.hpp  |    5 +
 src/mlpack/core/data/imputer.hpp                   |   11 +-
 src/mlpack/core/data/load.hpp                      |    5 +
 src/mlpack/core/data/load_arff.hpp                 |    5 +
 src/mlpack/core/data/load_arff_impl.hpp            |    5 +
 src/mlpack/core/data/load_impl.hpp                 |    5 +
 src/mlpack/core/data/map_policies/datatype.hpp     |    5 +
 .../core/data/map_policies/increment_policy.hpp    |    5 +
 .../core/data/map_policies/missing_policy.hpp      |   12 +-
 src/mlpack/core/data/normalize_labels.hpp          |    5 +
 src/mlpack/core/data/normalize_labels_impl.hpp     |    5 +
 src/mlpack/core/data/save.hpp                      |    5 +
 src/mlpack/core/data/save_impl.hpp                 |    5 +
 src/mlpack/core/data/serialization_shim.hpp        |    5 +
 .../core/data/serialization_template_version.hpp   |    5 +
 src/mlpack/core/data/split_data.hpp                |    5 +
 src/mlpack/core/dists/discrete_distribution.cpp    |    5 +
 src/mlpack/core/dists/discrete_distribution.hpp    |    5 +
 src/mlpack/core/dists/gamma_distribution.cpp       |    5 +
 src/mlpack/core/dists/gamma_distribution.hpp       |    5 +
 src/mlpack/core/dists/gaussian_distribution.cpp    |    5 +
 src/mlpack/core/dists/gaussian_distribution.hpp    |    5 +
 src/mlpack/core/dists/laplace_distribution.cpp     |    5 +
 src/mlpack/core/dists/laplace_distribution.hpp     |    5 +
 src/mlpack/core/dists/regression_distribution.cpp  |    5 +
 src/mlpack/core/dists/regression_distribution.hpp  |    5 +
 src/mlpack/core/kernels/cosine_distance.hpp        |    5 +
 src/mlpack/core/kernels/cosine_distance_impl.hpp   |    5 +
 src/mlpack/core/kernels/epanechnikov_kernel.cpp    |    5 +
 src/mlpack/core/kernels/epanechnikov_kernel.hpp    |    5 +
 .../core/kernels/epanechnikov_kernel_impl.hpp      |    5 +
 src/mlpack/core/kernels/example_kernel.hpp         |    5 +
 src/mlpack/core/kernels/gaussian_kernel.hpp        |    5 +
 .../core/kernels/hyperbolic_tangent_kernel.hpp     |    5 +
 src/mlpack/core/kernels/kernel_traits.hpp          |    5 +
 src/mlpack/core/kernels/laplacian_kernel.hpp       |    5 +
 src/mlpack/core/kernels/linear_kernel.hpp          |    5 +
 src/mlpack/core/kernels/polynomial_kernel.hpp      |    5 +
 .../core/kernels/pspectrum_string_kernel.cpp       |    5 +
 .../core/kernels/pspectrum_string_kernel.hpp       |    5 +
 .../core/kernels/pspectrum_string_kernel_impl.hpp  |    5 +
 src/mlpack/core/kernels/spherical_kernel.hpp       |    5 +
 src/mlpack/core/kernels/triangular_kernel.hpp      |    5 +
 src/mlpack/core/math/clamp.hpp                     |    5 +
 src/mlpack/core/math/columns_to_blocks.cpp         |    5 +
 src/mlpack/core/math/columns_to_blocks.hpp         |    5 +
 src/mlpack/core/math/lin_alg.cpp                   |    5 +
 src/mlpack/core/math/lin_alg.hpp                   |    5 +
 src/mlpack/core/math/lin_alg_impl.hpp              |    5 +
 src/mlpack/core/math/random.cpp                    |    5 +
 src/mlpack/core/math/random.hpp                    |    5 +
 src/mlpack/core/math/random_basis.cpp              |    5 +
 src/mlpack/core/math/random_basis.hpp              |    5 +
 src/mlpack/core/math/range.hpp                     |    5 +
 src/mlpack/core/math/range_impl.hpp                |    5 +
 src/mlpack/core/math/round.hpp                     |    5 +
 src/mlpack/core/metrics/ip_metric.hpp              |    5 +
 src/mlpack/core/metrics/ip_metric_impl.hpp         |    5 +
 src/mlpack/core/metrics/lmetric.hpp                |    5 +
 src/mlpack/core/metrics/lmetric_impl.hpp           |    5 +
 src/mlpack/core/metrics/mahalanobis_distance.hpp   |    5 +
 .../core/metrics/mahalanobis_distance_impl.hpp     |    5 +
 src/mlpack/core/optimizers/CMakeLists.txt          |    1 +
 src/mlpack/core/optimizers/adadelta/ada_delta.hpp  |    5 +
 .../core/optimizers/adadelta/ada_delta_impl.hpp    |    5 +
 src/mlpack/core/optimizers/adam/adam.hpp           |    5 +
 src/mlpack/core/optimizers/adam/adam_impl.hpp      |    5 +
 .../optimizers/aug_lagrangian/aug_lagrangian.hpp   |    5 +
 .../aug_lagrangian/aug_lagrangian_function.hpp     |    5 +
 .../aug_lagrangian_function_impl.hpp               |    5 +
 .../aug_lagrangian/aug_lagrangian_impl.hpp         |    5 +
 .../aug_lagrangian_test_functions.cpp              |    5 +
 .../aug_lagrangian_test_functions.hpp              |    5 +
 .../{sgd => gradient_descent}/CMakeLists.txt       |    4 +-
 .../gradient_descent/gradient_descent.hpp          |  123 +++
 .../gradient_descent/gradient_descent_impl.hpp     |   85 ++
 .../optimizers/gradient_descent/test_function.cpp  |   28 +
 .../optimizers/gradient_descent/test_function.hpp  |   45 +
 src/mlpack/core/optimizers/lbfgs/lbfgs.hpp         |    5 +
 src/mlpack/core/optimizers/lbfgs/lbfgs_impl.hpp    |    5 +
 .../core/optimizers/lbfgs/test_functions.cpp       |    5 +
 .../core/optimizers/lbfgs/test_functions.hpp       |    5 +
 .../optimizers/minibatch_sgd/minibatch_sgd.hpp     |    5 +
 .../minibatch_sgd/minibatch_sgd_impl.hpp           |    5 +
 src/mlpack/core/optimizers/rmsprop/rmsprop.hpp     |    5 +
 .../core/optimizers/rmsprop/rmsprop_impl.hpp       |    5 +
 .../core/optimizers/sa/exponential_schedule.hpp    |    5 +
 src/mlpack/core/optimizers/sa/sa.hpp               |    5 +
 src/mlpack/core/optimizers/sa/sa_impl.hpp          |    5 +
 src/mlpack/core/optimizers/sdp/lrsdp.hpp           |    5 +
 src/mlpack/core/optimizers/sdp/lrsdp_function.hpp  |    5 +
 .../core/optimizers/sdp/lrsdp_function_impl.hpp    |    5 +
 src/mlpack/core/optimizers/sdp/lrsdp_impl.hpp      |    5 +
 src/mlpack/core/optimizers/sdp/primal_dual.hpp     |    5 +
 .../core/optimizers/sdp/primal_dual_impl.hpp       |    5 +
 src/mlpack/core/optimizers/sdp/sdp.hpp             |    5 +
 src/mlpack/core/optimizers/sdp/sdp_impl.hpp        |    5 +
 src/mlpack/core/optimizers/sgd/sgd.hpp             |    5 +
 src/mlpack/core/optimizers/sgd/sgd_impl.hpp        |    5 +
 src/mlpack/core/optimizers/sgd/test_function.cpp   |    5 +
 src/mlpack/core/optimizers/sgd/test_function.hpp   |    5 +
 src/mlpack/core/tree/CMakeLists.txt                |   10 +-
 src/mlpack/core/tree/address.hpp                   |    5 +
 src/mlpack/core/tree/ballbound.hpp                 |    5 +
 src/mlpack/core/tree/ballbound_impl.hpp            |    5 +
 src/mlpack/core/tree/binary_space_tree.hpp         |    5 +
 .../tree/binary_space_tree/binary_space_tree.hpp   |   25 +-
 .../binary_space_tree/binary_space_tree_impl.hpp   |   15 +-
 .../breadth_first_dual_tree_traverser.hpp          |    5 +
 .../breadth_first_dual_tree_traverser_impl.hpp     |    5 +
 .../tree/binary_space_tree/dual_tree_traverser.hpp |    5 +
 .../binary_space_tree/dual_tree_traverser_impl.hpp |    5 +
 .../core/tree/binary_space_tree/mean_split.hpp     |    7 +-
 .../tree/binary_space_tree/mean_split_impl.hpp     |    5 +
 .../core/tree/binary_space_tree/midpoint_split.hpp |    7 +-
 .../tree/binary_space_tree/midpoint_split_impl.hpp |    5 +
 .../tree/binary_space_tree/rp_tree_max_split.hpp   |    7 +-
 .../binary_space_tree/rp_tree_max_split_impl.hpp   |    5 +
 .../tree/binary_space_tree/rp_tree_mean_split.hpp  |    7 +-
 .../binary_space_tree/rp_tree_mean_split_impl.hpp  |    5 +
 .../binary_space_tree/single_tree_traverser.hpp    |    5 +
 .../single_tree_traverser_impl.hpp                 |    5 +
 src/mlpack/core/tree/binary_space_tree/traits.hpp  |    7 +-
 src/mlpack/core/tree/binary_space_tree/typedef.hpp |    5 +
 .../core/tree/binary_space_tree/ub_tree_split.hpp  |    5 +
 .../tree/binary_space_tree/ub_tree_split_impl.hpp  |    5 +
 .../tree/binary_space_tree/vantage_point_split.hpp |    7 +-
 .../binary_space_tree/vantage_point_split_impl.hpp |    5 +
 src/mlpack/core/tree/bound_traits.hpp              |    5 +
 src/mlpack/core/tree/bounds.hpp                    |    5 +
 src/mlpack/core/tree/cellbound.hpp                 |    5 +
 src/mlpack/core/tree/cellbound_impl.hpp            |    5 +
 src/mlpack/core/tree/cosine_tree/cosine_tree.cpp   |    5 +
 src/mlpack/core/tree/cosine_tree/cosine_tree.hpp   |    7 +-
 src/mlpack/core/tree/cover_tree.hpp                |    5 +
 src/mlpack/core/tree/cover_tree/cover_tree.hpp     |   25 +-
 .../core/tree/cover_tree/cover_tree_impl.hpp       |   43 +-
 .../core/tree/cover_tree/dual_tree_traverser.hpp   |    5 +
 .../tree/cover_tree/dual_tree_traverser_impl.hpp   |    5 +
 .../core/tree/cover_tree/first_point_is_root.hpp   |    5 +
 .../core/tree/cover_tree/single_tree_traverser.hpp |    5 +
 .../tree/cover_tree/single_tree_traverser_impl.hpp |    5 +
 src/mlpack/core/tree/cover_tree/traits.hpp         |    5 +
 src/mlpack/core/tree/cover_tree/typedef.hpp        |    5 +
 src/mlpack/core/tree/example_tree.hpp              |    5 +
 .../core/tree/greedy_single_tree_traverser.hpp     |    5 +
 .../tree/greedy_single_tree_traverser_impl.hpp     |    5 +
 src/mlpack/core/tree/hollow_ball_bound.hpp         |    5 +
 src/mlpack/core/tree/hollow_ball_bound_impl.hpp    |    5 +
 src/mlpack/core/tree/hrectbound.hpp                |    5 +
 src/mlpack/core/tree/hrectbound_impl.hpp           |    5 +
 src/mlpack/core/tree/octree.hpp                    |   22 +
 .../core/tree/octree/dual_tree_traverser.hpp       |   83 ++
 .../core/tree/octree/dual_tree_traverser_impl.hpp  |  153 +++
 src/mlpack/core/tree/octree/octree.hpp             |  455 +++++++++
 src/mlpack/core/tree/octree/octree_impl.hpp        |  912 +++++++++++++++++
 .../core/tree/octree/single_tree_traverser.hpp     |   58 ++
 .../tree/octree/single_tree_traverser_impl.hpp     |   72 ++
 src/mlpack/core/tree/octree/traits.hpp             |   71 ++
 .../tree/{binary_space_tree => }/perform_split.hpp |   27 +-
 src/mlpack/core/tree/rectangle_tree.hpp            |    5 +
 .../tree/rectangle_tree/discrete_hilbert_value.hpp |    7 +-
 .../rectangle_tree/discrete_hilbert_value_impl.hpp |    7 +-
 .../tree/rectangle_tree/dual_tree_traverser.hpp    |   19 +-
 .../rectangle_tree/dual_tree_traverser_impl.hpp    |   19 +-
 .../hilbert_r_tree_auxiliary_information.hpp       |    7 +-
 .../hilbert_r_tree_auxiliary_information_impl.hpp  |    5 +
 .../hilbert_r_tree_descent_heuristic.hpp           |    5 +
 .../hilbert_r_tree_descent_heuristic_impl.hpp      |    5 +
 .../tree/rectangle_tree/hilbert_r_tree_split.hpp   |    7 +-
 .../rectangle_tree/hilbert_r_tree_split_impl.hpp   |    5 +
 .../tree/rectangle_tree/minimal_coverage_sweep.hpp |    5 +
 .../rectangle_tree/minimal_coverage_sweep_impl.hpp |    5 +
 .../rectangle_tree/minimal_splits_number_sweep.hpp |    5 +
 .../minimal_splits_number_sweep_impl.hpp           |    5 +
 .../rectangle_tree/no_auxiliary_information.hpp    |    7 +-
 .../r_plus_plus_tree_auxiliary_information.hpp     |    7 +-
 ...r_plus_plus_tree_auxiliary_information_impl.hpp |    5 +
 .../r_plus_plus_tree_descent_heuristic.hpp         |    5 +
 .../r_plus_plus_tree_descent_heuristic_impl.hpp    |    5 +
 .../r_plus_plus_tree_split_policy.hpp              |    7 +-
 .../r_plus_tree_descent_heuristic.hpp              |    5 +
 .../r_plus_tree_descent_heuristic_impl.hpp         |    5 +
 .../core/tree/rectangle_tree/r_plus_tree_split.hpp |    5 +
 .../tree/rectangle_tree/r_plus_tree_split_impl.hpp |    5 +
 .../rectangle_tree/r_plus_tree_split_policy.hpp    |    7 +-
 .../r_star_tree_descent_heuristic.hpp              |    5 +
 .../r_star_tree_descent_heuristic_impl.hpp         |    5 +
 .../core/tree/rectangle_tree/r_star_tree_split.hpp |    7 +-
 .../tree/rectangle_tree/r_star_tree_split_impl.hpp |    5 +
 .../rectangle_tree/r_tree_descent_heuristic.hpp    |    5 +
 .../r_tree_descent_heuristic_impl.hpp              |    5 +
 .../core/tree/rectangle_tree/r_tree_split.hpp      |    7 +-
 .../core/tree/rectangle_tree/r_tree_split_impl.hpp |    5 +
 .../core/tree/rectangle_tree/rectangle_tree.hpp    |   17 +-
 .../tree/rectangle_tree/rectangle_tree_impl.hpp    |    9 +-
 .../tree/rectangle_tree/single_tree_traverser.hpp  |   19 +-
 .../rectangle_tree/single_tree_traverser_impl.hpp  |   19 +-
 src/mlpack/core/tree/rectangle_tree/traits.hpp     |    5 +
 src/mlpack/core/tree/rectangle_tree/typedef.hpp    |    5 +
 .../x_tree_auxiliary_information.hpp               |   13 +-
 .../core/tree/rectangle_tree/x_tree_split.hpp      |    7 +-
 .../core/tree/rectangle_tree/x_tree_split_impl.hpp |    5 +
 src/mlpack/core/tree/space_split/hyperplane.hpp    |    7 +-
 .../core/tree/space_split/mean_space_split.hpp     |    5 +
 .../tree/space_split/mean_space_split_impl.hpp     |    5 +
 .../core/tree/space_split/midpoint_space_split.hpp |    5 +
 .../tree/space_split/midpoint_space_split_impl.hpp |    5 +
 .../core/tree/space_split/projection_vector.hpp    |    5 +
 src/mlpack/core/tree/space_split/space_split.hpp   |    5 +
 .../core/tree/space_split/space_split_impl.hpp     |    5 +
 src/mlpack/core/tree/spill_tree.hpp                |    5 +
 src/mlpack/core/tree/spill_tree/is_spill_tree.hpp  |    5 +
 .../tree/spill_tree/spill_dual_tree_traverser.hpp  |    5 +
 .../spill_tree/spill_dual_tree_traverser_impl.hpp  |    5 +
 .../spill_tree/spill_single_tree_traverser.hpp     |    5 +
 .../spill_single_tree_traverser_impl.hpp           |    5 +
 src/mlpack/core/tree/spill_tree/spill_tree.hpp     |   17 +-
 .../core/tree/spill_tree/spill_tree_impl.hpp       |    5 +
 src/mlpack/core/tree/spill_tree/traits.hpp         |    5 +
 src/mlpack/core/tree/spill_tree/typedef.hpp        |    5 +
 src/mlpack/core/tree/statistic.hpp                 |    5 +
 src/mlpack/core/tree/traversal_info.hpp            |    5 +
 src/mlpack/core/tree/tree_traits.hpp               |    5 +
 src/mlpack/core/util/CMakeLists.txt                |    2 +
 src/mlpack/core/util/arma_config_check.hpp         |    5 +
 src/mlpack/core/util/arma_traits.hpp               |    5 +
 src/mlpack/core/util/backtrace.cpp                 |    7 +-
 src/mlpack/core/util/backtrace.hpp                 |    7 +-
 src/mlpack/core/util/cli.cpp                       |    7 +-
 src/mlpack/core/util/cli.hpp                       |   41 +
 src/mlpack/core/util/cli_deleter.cpp               |    5 +
 src/mlpack/core/util/cli_deleter.hpp               |   10 +-
 src/mlpack/core/util/cli_impl.hpp                  |   23 +
 src/mlpack/core/util/deprecated.hpp                |    5 +
 src/mlpack/core/util/log.cpp                       |   37 +-
 src/mlpack/core/util/log.hpp                       |    5 +
 src/mlpack/core/util/nulloutstream.hpp             |    5 +
 src/mlpack/core/util/option.cpp                    |    5 +
 src/mlpack/core/util/option.hpp                    |    5 +
 src/mlpack/core/util/option_impl.hpp               |   59 ++
 src/mlpack/core/util/param.hpp                     |    5 +
 src/mlpack/core/util/prefixedoutstream.cpp         |    5 +
 src/mlpack/core/util/prefixedoutstream.hpp         |    5 +
 src/mlpack/core/util/prefixedoutstream_impl.hpp    |    5 +
 src/mlpack/core/util/sfinae_utility.hpp            |    5 +
 src/mlpack/core/util/{log.cpp => singletons.cpp}   |   48 +-
 src/mlpack/core/util/singletons.hpp                |   26 +
 src/mlpack/core/util/timers.cpp                    |    5 +
 src/mlpack/core/util/timers.hpp                    |    5 +
 src/mlpack/core/util/version.cpp                   |    5 +
 src/mlpack/core/util/version.hpp                   |    5 +
 src/mlpack/methods/CMakeLists.txt                  |    1 +
 src/mlpack/methods/adaboost/adaboost.hpp           |    5 +
 src/mlpack/methods/adaboost/adaboost_impl.hpp      |    5 +
 src/mlpack/methods/adaboost/adaboost_main.cpp      |    5 +
 src/mlpack/methods/amf/amf.hpp                     |    5 +
 src/mlpack/methods/amf/amf_impl.hpp                |    5 +
 src/mlpack/methods/amf/init_rules/average_init.hpp |    5 +
 src/mlpack/methods/amf/init_rules/given_init.hpp   |    5 +
 .../methods/amf/init_rules/random_acol_init.hpp    |    5 +
 src/mlpack/methods/amf/init_rules/random_init.hpp  |    5 +
 .../complete_incremental_termination.hpp           |    5 +
 .../incomplete_incremental_termination.hpp         |    5 +
 .../max_iteration_termination.hpp                  |    5 +
 .../simple_residue_termination.hpp                 |    5 +
 .../simple_tolerance_termination.hpp               |    5 +
 .../validation_RMSE_termination.hpp                |    5 +
 src/mlpack/methods/amf/update_rules/nmf_als.hpp    |    5 +
 .../methods/amf/update_rules/nmf_mult_dist.hpp     |    5 +
 .../methods/amf/update_rules/nmf_mult_div.hpp      |    5 +
 .../amf/update_rules/svd_batch_learning.hpp        |    5 +
 .../svd_complete_incremental_learning.hpp          |    5 +
 .../svd_incomplete_incremental_learning.hpp        |    5 +
 .../ann/activation_functions/identity_function.hpp |    5 +
 .../ann/activation_functions/logistic_function.hpp |    5 +
 .../activation_functions/rectifier_function.hpp    |    5 +
 .../ann/activation_functions/softsign_function.hpp |    5 +
 .../ann/activation_functions/tanh_function.hpp     |    5 +
 src/mlpack/methods/ann/cnn.hpp                     |    5 +
 src/mlpack/methods/ann/cnn_impl.hpp                |    5 +
 .../methods/ann/convolution_rules/border_modes.hpp |    5 +
 .../ann/convolution_rules/fft_convolution.hpp      |    5 +
 .../ann/convolution_rules/naive_convolution.hpp    |    5 +
 .../ann/convolution_rules/svd_convolution.hpp      |    5 +
 src/mlpack/methods/ann/ffn.hpp                     |    5 +
 src/mlpack/methods/ann/ffn_impl.hpp                |    5 +
 .../kathirvalavakumar_subavathi_init.hpp           |    5 +
 .../methods/ann/init_rules/nguyen_widrow_init.hpp  |    5 +
 src/mlpack/methods/ann/init_rules/oivs_init.hpp    |    5 +
 .../methods/ann/init_rules/orthogonal_init.hpp     |    5 +
 src/mlpack/methods/ann/init_rules/random_init.hpp  |    7 +-
 src/mlpack/methods/ann/init_rules/zero_init.hpp    |    5 +
 src/mlpack/methods/ann/layer/base_layer.hpp        |    5 +
 src/mlpack/methods/ann/layer/bias_layer.hpp        |    5 +
 .../ann/layer/binary_classification_layer.hpp      |    5 +
 src/mlpack/methods/ann/layer/constant_layer.hpp    |    5 +
 src/mlpack/methods/ann/layer/conv_layer.hpp        |    5 +
 src/mlpack/methods/ann/layer/dropconnect_layer.hpp |    7 +-
 src/mlpack/methods/ann/layer/dropout_layer.hpp     |    5 +
 src/mlpack/methods/ann/layer/empty_layer.hpp       |    5 +
 src/mlpack/methods/ann/layer/glimpse_layer.hpp     |    5 +
 src/mlpack/methods/ann/layer/hard_tanh_layer.hpp   |    5 +
 src/mlpack/methods/ann/layer/layer_traits.hpp      |    5 +
 src/mlpack/methods/ann/layer/leaky_relu_layer.hpp  |    5 +
 src/mlpack/methods/ann/layer/linear_layer.hpp      |    5 +
 src/mlpack/methods/ann/layer/log_softmax_layer.hpp |    5 +
 src/mlpack/methods/ann/layer/lstm_layer.hpp        |    5 +
 .../ann/layer/multiclass_classification_layer.hpp  |    5 +
 .../methods/ann/layer/multiply_constant_layer.hpp  |    5 +
 .../ann/layer/negative_log_likelihood_layer.hpp    |   11 +-
 src/mlpack/methods/ann/layer/one_hot_layer.hpp     |    5 +
 src/mlpack/methods/ann/layer/pooling_layer.hpp     |    5 +
 src/mlpack/methods/ann/layer/recurrent_layer.hpp   |    5 +
 .../methods/ann/layer/reinforce_normal_layer.hpp   |    5 +
 src/mlpack/methods/ann/layer/softmax_layer.hpp     |    5 +
 src/mlpack/methods/ann/layer/sparse_bias_layer.hpp |    5 +
 .../methods/ann/layer/sparse_input_layer.hpp       |    5 +
 .../methods/ann/layer/sparse_output_layer.hpp      |    5 +
 .../methods/ann/layer/vr_class_reward_layer.hpp    |    5 +
 src/mlpack/methods/ann/network_traits.hpp          |    5 +
 src/mlpack/methods/ann/network_util.hpp            |    5 +
 src/mlpack/methods/ann/network_util_impl.hpp       |    5 +
 .../ann/performance_functions/cee_function.hpp     |    5 +
 .../ann/performance_functions/mse_function.hpp     |    5 +
 .../ann/performance_functions/sparse_function.hpp  |    5 +
 .../ann/performance_functions/sse_function.hpp     |    5 +
 .../methods/ann/pooling_rules/max_pooling.hpp      |    5 +
 .../methods/ann/pooling_rules/mean_pooling.hpp     |    5 +
 src/mlpack/methods/ann/rnn.hpp                     |    5 +
 src/mlpack/methods/ann/rnn_impl.hpp                |    5 +
 .../methods/{lsh => approx_kfn}/CMakeLists.txt     |   14 +-
 src/mlpack/methods/approx_kfn/approx_kfn_main.cpp  |  271 ++++++
 src/mlpack/methods/approx_kfn/drusilla_select.hpp  |  130 +++
 .../methods/approx_kfn/drusilla_select_impl.hpp    |  218 +++++
 src/mlpack/methods/approx_kfn/qdafn.hpp            |  118 +++
 src/mlpack/methods/approx_kfn/qdafn_impl.hpp       |  192 ++++
 src/mlpack/methods/approx_kfn/qdafn_main.cpp       |  103 ++
 src/mlpack/methods/cf/cf.cpp                       |    5 +
 src/mlpack/methods/cf/cf.hpp                       |    5 +
 src/mlpack/methods/cf/cf_impl.hpp                  |    5 +
 src/mlpack/methods/cf/cf_main.cpp                  |    5 +
 src/mlpack/methods/cf/svd_wrapper.hpp              |    5 +
 src/mlpack/methods/cf/svd_wrapper_impl.hpp         |    5 +
 .../methods/decision_stump/decision_stump.hpp      |    5 +
 .../methods/decision_stump/decision_stump_impl.hpp |    5 +
 .../methods/decision_stump/decision_stump_main.cpp |    5 +
 src/mlpack/methods/det/det_main.cpp                |    5 +
 src/mlpack/methods/det/dt_utils.cpp                |    5 +
 src/mlpack/methods/det/dt_utils.hpp                |    5 +
 src/mlpack/methods/det/dtree.cpp                   |    5 +
 src/mlpack/methods/det/dtree.hpp                   |    5 +
 src/mlpack/methods/emst/dtb.hpp                    |    5 +
 src/mlpack/methods/emst/dtb_impl.hpp               |    5 +
 src/mlpack/methods/emst/dtb_rules.hpp              |    5 +
 src/mlpack/methods/emst/dtb_rules_impl.hpp         |    7 +-
 src/mlpack/methods/emst/dtb_stat.hpp               |    5 +
 src/mlpack/methods/emst/edge_pair.hpp              |    5 +
 src/mlpack/methods/emst/emst_main.cpp              |    5 +
 src/mlpack/methods/emst/union_find.hpp             |    5 +
 src/mlpack/methods/fastmks/fastmks.hpp             |    5 +
 src/mlpack/methods/fastmks/fastmks_impl.hpp        |    5 +
 src/mlpack/methods/fastmks/fastmks_main.cpp        |    5 +
 src/mlpack/methods/fastmks/fastmks_model.cpp       |    5 +
 src/mlpack/methods/fastmks/fastmks_model.hpp       |    5 +
 src/mlpack/methods/fastmks/fastmks_model_impl.hpp  |    5 +
 src/mlpack/methods/fastmks/fastmks_rules.hpp       |    5 +
 src/mlpack/methods/fastmks/fastmks_rules_impl.hpp  |    5 +
 src/mlpack/methods/fastmks/fastmks_stat.hpp        |    5 +
 src/mlpack/methods/gmm/diagonal_constraint.hpp     |    5 +
 .../methods/gmm/eigenvalue_ratio_constraint.hpp    |    5 +
 src/mlpack/methods/gmm/em_fit.hpp                  |    5 +
 src/mlpack/methods/gmm/em_fit_impl.hpp             |    5 +
 src/mlpack/methods/gmm/gmm.cpp                     |    5 +
 src/mlpack/methods/gmm/gmm.hpp                     |    5 +
 src/mlpack/methods/gmm/gmm_generate_main.cpp       |    5 +
 src/mlpack/methods/gmm/gmm_impl.hpp                |    5 +
 src/mlpack/methods/gmm/gmm_probability_main.cpp    |    5 +
 src/mlpack/methods/gmm/gmm_train_main.cpp          |    5 +
 src/mlpack/methods/gmm/no_constraint.hpp           |    5 +
 .../methods/gmm/positive_definite_constraint.hpp   |    5 +
 src/mlpack/methods/hmm/hmm.hpp                     |    5 +
 src/mlpack/methods/hmm/hmm_generate_main.cpp       |    5 +
 src/mlpack/methods/hmm/hmm_impl.hpp                |    5 +
 src/mlpack/methods/hmm/hmm_loglik_main.cpp         |    5 +
 src/mlpack/methods/hmm/hmm_regression.hpp          |    5 +
 src/mlpack/methods/hmm/hmm_regression_impl.hpp     |    5 +
 src/mlpack/methods/hmm/hmm_train_main.cpp          |    5 +
 src/mlpack/methods/hmm/hmm_util.hpp                |    5 +
 src/mlpack/methods/hmm/hmm_util_impl.hpp           |    5 +
 src/mlpack/methods/hmm/hmm_viterbi_main.cpp        |    5 +
 .../hoeffding_trees/binary_numeric_split.hpp       |    5 +
 .../hoeffding_trees/binary_numeric_split_impl.hpp  |    5 +
 .../hoeffding_trees/binary_numeric_split_info.hpp  |    5 +
 .../hoeffding_trees/categorical_split_info.hpp     |    5 +
 .../methods/hoeffding_trees/gini_impurity.hpp      |    5 +
 .../hoeffding_categorical_split.hpp                |    5 +
 .../hoeffding_categorical_split_impl.hpp           |    5 +
 .../hoeffding_trees/hoeffding_numeric_split.hpp    |    5 +
 .../hoeffding_numeric_split_impl.hpp               |    5 +
 .../methods/hoeffding_trees/hoeffding_tree.hpp     |    5 +
 .../hoeffding_trees/hoeffding_tree_impl.hpp        |    5 +
 .../hoeffding_trees/hoeffding_tree_main.cpp        |    5 +
 .../methods/hoeffding_trees/information_gain.hpp   |    5 +
 .../methods/hoeffding_trees/numeric_split_info.hpp |    5 +
 src/mlpack/methods/hoeffding_trees/typedef.hpp     |    5 +
 src/mlpack/methods/kernel_pca/kernel_pca.hpp       |    5 +
 src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp  |    5 +
 src/mlpack/methods/kernel_pca/kernel_pca_main.cpp  |    5 +
 .../kernel_pca/kernel_rules/naive_method.hpp       |    5 +
 .../kernel_pca/kernel_rules/nystroem_method.hpp    |    5 +
 src/mlpack/methods/kmeans/allow_empty_clusters.hpp |    5 +
 src/mlpack/methods/kmeans/dual_tree_kmeans.hpp     |    5 +
 .../methods/kmeans/dual_tree_kmeans_impl.hpp       |    5 +
 .../methods/kmeans/dual_tree_kmeans_rules.hpp      |    5 +
 .../methods/kmeans/dual_tree_kmeans_rules_impl.hpp |    9 +-
 .../methods/kmeans/dual_tree_kmeans_statistic.hpp  |    5 +
 src/mlpack/methods/kmeans/elkan_kmeans.hpp         |    5 +
 src/mlpack/methods/kmeans/elkan_kmeans_impl.hpp    |    5 +
 src/mlpack/methods/kmeans/hamerly_kmeans.hpp       |    5 +
 src/mlpack/methods/kmeans/hamerly_kmeans_impl.hpp  |    5 +
 src/mlpack/methods/kmeans/kill_empty_clusters.hpp  |    5 +
 src/mlpack/methods/kmeans/kmeans.hpp               |    5 +
 src/mlpack/methods/kmeans/kmeans_impl.hpp          |    5 +
 src/mlpack/methods/kmeans/kmeans_main.cpp          |    5 +
 .../methods/kmeans/max_variance_new_cluster.hpp    |    5 +
 .../kmeans/max_variance_new_cluster_impl.hpp       |    5 +
 src/mlpack/methods/kmeans/naive_kmeans.hpp         |    5 +
 src/mlpack/methods/kmeans/naive_kmeans_impl.hpp    |    5 +
 src/mlpack/methods/kmeans/pelleg_moore_kmeans.hpp  |    5 +
 .../methods/kmeans/pelleg_moore_kmeans_impl.hpp    |    5 +
 .../methods/kmeans/pelleg_moore_kmeans_rules.hpp   |    5 +
 .../kmeans/pelleg_moore_kmeans_rules_impl.hpp      |    5 +
 .../kmeans/pelleg_moore_kmeans_statistic.hpp       |    5 +
 src/mlpack/methods/kmeans/random_partition.hpp     |    5 +
 src/mlpack/methods/kmeans/refined_start.hpp        |    5 +
 src/mlpack/methods/kmeans/refined_start_impl.hpp   |    5 +
 .../methods/kmeans/sample_initialization.hpp       |    5 +
 src/mlpack/methods/lars/lars.cpp                   |    5 +
 src/mlpack/methods/lars/lars.hpp                   |    5 +
 src/mlpack/methods/lars/lars_impl.hpp              |    5 +
 src/mlpack/methods/lars/lars_main.cpp              |    5 +
 .../linear_regression/linear_regression.cpp        |    5 +
 .../linear_regression/linear_regression.hpp        |    5 +
 .../linear_regression/linear_regression_main.cpp   |    5 +
 src/mlpack/methods/local_coordinate_coding/lcc.cpp |    5 +
 src/mlpack/methods/local_coordinate_coding/lcc.hpp |    5 +
 .../methods/local_coordinate_coding/lcc_impl.hpp   |    5 +
 .../local_coordinate_coding_main.cpp               |    5 +
 .../logistic_regression/logistic_regression.hpp    |    5 +
 .../logistic_regression_function.hpp               |    5 +
 .../logistic_regression_function_impl.hpp          |    5 +
 .../logistic_regression_impl.hpp                   |    7 +-
 .../logistic_regression_main.cpp                   |    5 +
 src/mlpack/methods/lsh/lsh_main.cpp                |    5 +
 src/mlpack/methods/lsh/lsh_search.hpp              |    5 +
 src/mlpack/methods/lsh/lsh_search_impl.hpp         |    5 +
 .../matrix_completion/matrix_completion.cpp        |    5 +
 .../matrix_completion/matrix_completion.hpp        |    5 +
 src/mlpack/methods/mean_shift/mean_shift.hpp       |    5 +
 src/mlpack/methods/mean_shift/mean_shift_impl.hpp  |    5 +
 src/mlpack/methods/mean_shift/mean_shift_main.cpp  |    5 +
 src/mlpack/methods/mvu/mvu.cpp                     |    5 +
 src/mlpack/methods/mvu/mvu.hpp                     |    5 +
 src/mlpack/methods/mvu/mvu_main.cpp                |    5 +
 .../methods/naive_bayes/naive_bayes_classifier.hpp |    7 +-
 .../naive_bayes/naive_bayes_classifier_impl.hpp    |    5 +
 src/mlpack/methods/naive_bayes/nbc_main.cpp        |    5 +
 src/mlpack/methods/nca/nca.hpp                     |    5 +
 src/mlpack/methods/nca/nca_impl.hpp                |    5 +
 src/mlpack/methods/nca/nca_main.cpp                |    5 +
 .../methods/nca/nca_softmax_error_function.hpp     |    5 +
 .../nca/nca_softmax_error_function_impl.hpp        |    5 +
 src/mlpack/methods/neighbor_search/kfn_main.cpp    |   14 +-
 src/mlpack/methods/neighbor_search/knn_main.cpp    |   16 +-
 .../methods/neighbor_search/neighbor_search.hpp    |    5 +
 .../neighbor_search/neighbor_search_impl.hpp       |    5 +
 .../neighbor_search/neighbor_search_rules.hpp      |    5 +
 .../neighbor_search/neighbor_search_rules_impl.hpp |    5 +
 .../neighbor_search/neighbor_search_stat.hpp       |    5 +
 src/mlpack/methods/neighbor_search/ns_model.hpp    |   22 +-
 .../methods/neighbor_search/ns_model_impl.hpp      |   34 +-
 .../sort_policies/furthest_neighbor_sort.hpp       |    5 +
 .../sort_policies/furthest_neighbor_sort_impl.hpp  |   11 +-
 .../sort_policies/nearest_neighbor_sort.hpp        |    5 +
 .../sort_policies/nearest_neighbor_sort_impl.hpp   |   11 +-
 src/mlpack/methods/neighbor_search/typedef.hpp     |    5 +
 src/mlpack/methods/neighbor_search/unmap.cpp       |    5 +
 src/mlpack/methods/neighbor_search/unmap.hpp       |    5 +
 src/mlpack/methods/nmf/nmf_main.cpp                |    5 +
 .../methods/nystroem_method/kmeans_selection.hpp   |    5 +
 .../methods/nystroem_method/nystroem_method.hpp    |    5 +
 .../nystroem_method/nystroem_method_impl.hpp       |    5 +
 .../methods/nystroem_method/ordered_selection.hpp  |    5 +
 .../methods/nystroem_method/random_selection.hpp   |    5 +
 .../decomposition_policies/exact_svd_method.hpp    |    5 +
 .../pca/decomposition_policies/quic_svd_method.hpp |    5 +
 .../randomized_svd_method.hpp                      |    5 +
 src/mlpack/methods/pca/pca.hpp                     |    5 +
 src/mlpack/methods/pca/pca_impl.hpp                |    5 +
 src/mlpack/methods/pca/pca_main.cpp                |    5 +
 .../initialization_methods/random_init.hpp         |    5 +
 .../initialization_methods/zero_init.hpp           |    5 +
 .../learning_policies/simple_weight_update.hpp     |    5 +
 src/mlpack/methods/perceptron/perceptron.hpp       |    5 +
 src/mlpack/methods/perceptron/perceptron_impl.hpp  |    5 +
 src/mlpack/methods/perceptron/perceptron_main.cpp  |    5 +
 .../preprocess/preprocess_binarize_main.cpp        |    5 +
 .../preprocess/preprocess_describe_main.cpp        |    5 +
 .../methods/preprocess/preprocess_imputer_main.cpp |  118 ++-
 .../methods/preprocess/preprocess_split_main.cpp   |    5 +
 src/mlpack/methods/quic_svd/quic_svd.cpp           |    5 +
 src/mlpack/methods/quic_svd/quic_svd.hpp           |    5 +
 src/mlpack/methods/radical/radical.cpp             |    5 +
 src/mlpack/methods/radical/radical.hpp             |    5 +
 src/mlpack/methods/radical/radical_main.cpp        |    5 +
 .../methods/randomized_svd/randomized_svd.cpp      |   24 +-
 .../methods/randomized_svd/randomized_svd.hpp      |   37 +-
 src/mlpack/methods/range_search/range_search.hpp   |    5 +
 .../methods/range_search/range_search_impl.hpp     |    5 +
 .../methods/range_search/range_search_main.cpp     |   13 +-
 .../methods/range_search/range_search_rules.hpp    |    5 +
 .../range_search/range_search_rules_impl.hpp       |    7 +-
 .../methods/range_search/range_search_stat.hpp     |    5 +
 src/mlpack/methods/range_search/rs_model.cpp       |  112 ++-
 src/mlpack/methods/range_search/rs_model.hpp       |   11 +-
 src/mlpack/methods/range_search/rs_model_impl.hpp  |   19 +
 src/mlpack/methods/rann/krann_main.cpp             |   16 +-
 src/mlpack/methods/rann/ra_model.hpp               |   11 +-
 src/mlpack/methods/rann/ra_model_impl.hpp          |  183 ++--
 src/mlpack/methods/rann/ra_query_stat.hpp          |    5 +
 src/mlpack/methods/rann/ra_search.hpp              |    5 +
 src/mlpack/methods/rann/ra_search_impl.hpp         |    5 +
 src/mlpack/methods/rann/ra_search_rules.hpp        |    5 +
 src/mlpack/methods/rann/ra_search_rules_impl.hpp   |    5 +
 src/mlpack/methods/rann/ra_typedef.hpp             |    5 +
 src/mlpack/methods/rann/ra_util.cpp                |    5 +
 src/mlpack/methods/rann/ra_util.hpp                |    5 +
 .../methods/regularized_svd/regularized_svd.hpp    |    5 +
 .../regularized_svd/regularized_svd_function.cpp   |    5 +
 .../regularized_svd/regularized_svd_function.hpp   |    5 +
 .../regularized_svd/regularized_svd_impl.hpp       |    5 +
 src/mlpack/methods/rmva/rmva.hpp                   |    5 +
 src/mlpack/methods/rmva/rmva_impl.hpp              |    5 +
 src/mlpack/methods/rmva/rmva_main.cpp              |    5 +
 .../softmax_regression/softmax_regression.hpp      |    5 +
 .../softmax_regression_function.cpp                |    5 +
 .../softmax_regression_function.hpp                |    5 +
 .../softmax_regression/softmax_regression_impl.hpp |    5 +
 .../softmax_regression/softmax_regression_main.cpp |   10 +
 .../methods/sparse_autoencoder/maximal_inputs.cpp  |    5 +
 .../methods/sparse_autoencoder/maximal_inputs.hpp  |    5 +
 .../sparse_autoencoder/sparse_autoencoder.hpp      |    5 +
 .../sparse_autoencoder_function.cpp                |    5 +
 .../sparse_autoencoder_function.hpp                |    5 +
 .../sparse_autoencoder/sparse_autoencoder_impl.hpp |    5 +
 .../data_dependent_random_initializer.hpp          |    5 +
 .../methods/sparse_coding/nothing_initializer.hpp  |    5 +
 .../methods/sparse_coding/random_initializer.hpp   |    5 +
 src/mlpack/methods/sparse_coding/sparse_coding.cpp |    5 +
 src/mlpack/methods/sparse_coding/sparse_coding.hpp |    5 +
 .../methods/sparse_coding/sparse_coding_impl.hpp   |    5 +
 .../methods/sparse_coding/sparse_coding_main.cpp   |    5 +
 src/mlpack/prereqs.hpp                             |    5 +
 src/mlpack/tests/CMakeLists.txt                    |    4 +
 src/mlpack/tests/activation_functions_test.cpp     |    5 +
 src/mlpack/tests/ada_delta_test.cpp                |    5 +
 src/mlpack/tests/adaboost_test.cpp                 |    5 +
 src/mlpack/tests/adam_test.cpp                     |    5 +
 src/mlpack/tests/akfn_test.cpp                     |    5 +
 src/mlpack/tests/aknn_test.cpp                     |    5 +
 src/mlpack/tests/arma_extend_test.cpp              |    5 +
 src/mlpack/tests/armadillo_svd_test.cpp            |    5 +
 src/mlpack/tests/aug_lagrangian_test.cpp           |    5 +
 src/mlpack/tests/binarize_test.cpp                 |    5 +
 src/mlpack/tests/cf_test.cpp                       |    5 +
 src/mlpack/tests/cli_test.cpp                      |   66 ++
 src/mlpack/tests/convolution_test.cpp              |    5 +
 src/mlpack/tests/convolutional_network_test.cpp    |    5 +
 src/mlpack/tests/cosine_tree_test.cpp              |    5 +
 src/mlpack/tests/decision_stump_test.cpp           |    5 +
 src/mlpack/tests/det_test.cpp                      |    5 +
 src/mlpack/tests/distribution_test.cpp             |    5 +
 src/mlpack/tests/drusilla_select_test.cpp          |  170 ++++
 src/mlpack/tests/emst_test.cpp                     |    5 +
 src/mlpack/tests/fastmks_test.cpp                  |    5 +
 src/mlpack/tests/feedforward_network_test.cpp      |    5 +
 src/mlpack/tests/gmm_test.cpp                      |    5 +
 src/mlpack/tests/gradient_descent_test.cpp         |   57 ++
 src/mlpack/tests/hmm_test.cpp                      |    5 +
 src/mlpack/tests/hoeffding_tree_test.cpp           |    5 +
 src/mlpack/tests/hyperplane_test.cpp               |    5 +
 src/mlpack/tests/imputation_test.cpp               |   18 +-
 src/mlpack/tests/ind2sub_test.cpp                  |    5 +
 src/mlpack/tests/init_rules_test.cpp               |    5 +
 src/mlpack/tests/kernel_pca_test.cpp               |    5 +
 src/mlpack/tests/kernel_test.cpp                   |    5 +
 src/mlpack/tests/kernel_traits_test.cpp            |    5 +
 src/mlpack/tests/kfn_test.cpp                      |    5 +
 src/mlpack/tests/kmeans_test.cpp                   |    5 +
 src/mlpack/tests/knn_test.cpp                      |   17 +-
 src/mlpack/tests/krann_search_test.cpp             |   11 +-
 src/mlpack/tests/lars_test.cpp                     |    5 +
 src/mlpack/tests/layer_traits_test.cpp             |    5 +
 src/mlpack/tests/lbfgs_test.cpp                    |    5 +
 src/mlpack/tests/lin_alg_test.cpp                  |    5 +
 src/mlpack/tests/linear_regression_test.cpp        |    5 +
 src/mlpack/tests/load_save_test.cpp                |   17 +-
 src/mlpack/tests/local_coordinate_coding_test.cpp  |    5 +
 src/mlpack/tests/log_test.cpp                      |    5 +
 src/mlpack/tests/logistic_regression_test.cpp      |    5 +
 src/mlpack/tests/lrsdp_test.cpp                    |    5 +
 src/mlpack/tests/lsh_test.cpp                      |   15 +-
 src/mlpack/tests/lstm_peephole_test.cpp            |    5 +
 src/mlpack/tests/math_test.cpp                     |    5 +
 src/mlpack/tests/matrix_completion_test.cpp        |    5 +
 src/mlpack/tests/maximal_inputs_test.cpp           |    5 +
 src/mlpack/tests/mean_shift_test.cpp               |    5 +
 src/mlpack/tests/metric_test.cpp                   |    5 +
 src/mlpack/tests/minibatch_sgd_test.cpp            |    5 +
 src/mlpack/tests/mlpack_test.cpp                   |    5 +
 src/mlpack/tests/nbc_test.cpp                      |    5 +
 src/mlpack/tests/nca_test.cpp                      |    5 +
 src/mlpack/tests/network_util_test.cpp             |    5 +
 src/mlpack/tests/nmf_test.cpp                      |    5 +
 src/mlpack/tests/nystroem_method_test.cpp          |    5 +
 src/mlpack/tests/octree_test.cpp                   |  347 +++++++
 src/mlpack/tests/pca_test.cpp                      |    5 +
 src/mlpack/tests/perceptron_test.cpp               |    5 +
 src/mlpack/tests/performance_functions_test.cpp    |    5 +
 src/mlpack/tests/pooling_rules_test.cpp            |    5 +
 src/mlpack/tests/qdafn_test.cpp                    |  211 ++++
 src/mlpack/tests/quic_svd_test.cpp                 |    5 +
 src/mlpack/tests/radical_test.cpp                  |    5 +
 src/mlpack/tests/randomized_svd_test.cpp           |    5 +
 src/mlpack/tests/range_search_test.cpp             |   17 +-
 src/mlpack/tests/rectangle_tree_test.cpp           |    5 +
 src/mlpack/tests/recurrent_network_test.cpp        |    5 +
 src/mlpack/tests/regularized_svd_test.cpp          |    5 +
 src/mlpack/tests/rmsprop_test.cpp                  |    5 +
 src/mlpack/tests/sa_test.cpp                       |   14 +-
 src/mlpack/tests/sdp_primal_dual_test.cpp          |    5 +
 src/mlpack/tests/serialization.cpp                 |    5 +
 src/mlpack/tests/serialization.hpp                 |    5 +
 src/mlpack/tests/serialization_test.cpp            |    5 +
 src/mlpack/tests/sgd_test.cpp                      |    5 +
 src/mlpack/tests/softmax_regression_test.cpp       |    5 +
 src/mlpack/tests/sort_policy_test.cpp              |    5 +
 src/mlpack/tests/sparse_autoencoder_test.cpp       |    5 +
 src/mlpack/tests/sparse_coding_test.cpp            |    5 +
 src/mlpack/tests/spill_tree_test.cpp               |    5 +
 src/mlpack/tests/split_data_test.cpp               |    5 +
 src/mlpack/tests/svd_batch_test.cpp                |    5 +
 src/mlpack/tests/svd_incremental_test.cpp          |    5 +
 src/mlpack/tests/termination_policy_test.cpp       |    5 +
 src/mlpack/tests/test_tools.hpp                    |    5 +
 src/mlpack/tests/tree_test.cpp                     |   77 +-
 src/mlpack/tests/tree_traits_test.cpp              |    5 +
 src/mlpack/tests/ub_tree_test.cpp                  |   15 +-
 src/mlpack/tests/union_find_test.cpp               |    5 +
 src/mlpack/tests/vantage_point_tree_test.cpp       |    5 +
 686 files changed, 9203 insertions(+), 562 deletions(-)

diff --cc src/mlpack/core/util/cli.hpp
index 7c871b5,e55a9ed..c38a01b
--- a/src/mlpack/core/util/cli.hpp
+++ b/src/mlpack/core/util/cli.hpp
@@@ -433,8 -421,51 +438,44 @@@ class CL
     */
    CLI();
  
 -  /**
 -   * Initialize desc with a particular name.
 -   *
 -   * @param optionsName Name of the module, as far as boost is concerned.
 -   */
 -  CLI(const std::string& optionsName);
 -
    //! Private copy constructor; we don't want copies floating around.
    CLI(const CLI& other);
+ 
+   //! Metaprogramming structure for vector detection.
+   template<typename T>
+   struct IsStdVector { const static bool value = false; };
+ 
+   //! Metaprogramming structure for vector detection.
+   template<typename eT>
+   struct IsStdVector<std::vector<eT>> { const static bool value = true; };
+ 
+   /**
+    * Add an option if it is not a vector type.  This is a utility function used
+    * by CLI::Add.
+    *
+    * @tparam Type of parameter.
+    * @param optId Name of parameter.
+    * @param descr Description.
+    */
+   template<typename T>
+   void AddOption(
+       const char* optId,
+       const char* descr,
+       const typename boost::disable_if<IsStdVector<T>>::type* /* junk */ = 0);
+ 
+   /**
+    * Add an option if it is a vector type.  This is a utility function used by
+    * CLI::Add.
+    *
+    * @tparam Type of parameter.
+    * @param optId Name of parameter.
+    * @param descr Description.
+    */
+   template<typename T>
+   void AddOption(
+       const char* optId,
+       const char* descr,
+       const typename boost::enable_if<IsStdVector<T>>::type* /* junk */ = 0);
  };
  
  } // namespace mlpack
diff --cc src/mlpack/core/util/cli_impl.hpp
index 37c8dae,d235d1c..6ae9c1c
--- a/src/mlpack/core/util/cli_impl.hpp
+++ b/src/mlpack/core/util/cli_impl.hpp
@@@ -160,116 -121,52 +165,134 @@@ void CLI::Add(const T& defaultValue
  template<typename T>
  T& CLI::GetParam(const std::string& identifier)
  {
 -  // Used to ensure we have a valid value.
 -  T tmp = T();
 +  // Only use the alias if the parameter does not exist as given.
 +  std::string key =
 +      (GetSingleton().parameters.count(identifier) == 0 &&
 +       identifier.length() == 1 && GetSingleton().aliases.count(identifier[0]))
 +      ? GetSingleton().aliases[identifier[0]] : identifier;
 +
 +  if (GetSingleton().parameters.count(key) == 0)
 +    Log::Fatal << "Parameter --" << key << " does not exist in this program!"
 +        << std::endl;
  
 -  // Used to index into the globalValues map.
 -  std::string key = std::string(identifier);
 -  gmap_t& gmap = GetSingleton().globalValues;
 +  util::ParamData& d = GetSingleton().parameters[key];
  
 -  // Now check if we have an alias.
 -  amap_t& amap = GetSingleton().aliasValues;
 -  if (amap.count(key))
 -    key = amap[key];
 +  // Make sure the types are correct.
 +  if (TYPENAME(T) != d.tname)
 +    Log::Fatal << "Attempted to access parameter --" << key << " as type "
 +        << TYPENAME(T) << ", but its true type is " << d.tname << "!"
 +        << std::endl;
  
 -  // What if we don't actually have any value?
 -  if (!gmap.count(key))
 +  // We already know that required options have been passed, so we have a valid
 +  // value to return.  Because the parameters held are sometimes different types
 +  // than what the user wants, we must pass through a utility function.
 +  typename util::ParameterType<T>::type& v =
 +      *boost::any_cast<typename util::ParameterType<T>::type>(&d.value);
 +  return util::HandleParameter<T>(v, d);
 +}
 +
 +/**
 + * Get the unmapped (i.e. what the user specifies on the command-line) value
 + * of type ParameterType<T>::value found while parsing.  You cans et the value
 + * using this reference safely.  You should not need to use this function
 + * unless you are doing something tricky (like getting the filename a user
 + * specified for a matrix parameter or something).
 + *
 + * @param identifier The name of the parameter in question.
 + */
 +template<typename T>
 +typename util::ParameterType<T>::type& CLI::GetUnmappedParam(
 +    const std::string& identifier)
 +{
 +  std::string key =
 +      (identifier.length() == 1 && GetSingleton().aliases.count(identifier[0]))
 +      ? GetSingleton().aliases[identifier[0]] : identifier;
 +
 +  if (GetSingleton().parameters.count(key) == 0)
 +    Log::Fatal << "Parameter --" << key << " does not exist in this program!"
 +        << std::endl;
 +
 +  util::ParamData& d = GetSingleton().parameters[key];
 +
 +  // Make sure the types are correct.
 +  if (TYPENAME(T) != d.tname)
 +    Log::Fatal << "Attempted to access parameter --" << key << " as type "
 +        << TYPENAME(T) << ", but its true type is " << d.tname << "!"
 +        << std::endl;
 +
 +  return *boost::any_cast<typename util::ParameterType<T>::type>(&d.value);
 +}
 +
 +
 +//! This overload is called when nothing special needs to happen to the name of
 +//! the parameter.
 +template<typename T>
 +std::string util::MapParameterName(
 +    const std::string& identifier,
 +    const typename boost::disable_if<arma::is_arma_type<T>>::type* /* junk */)
 +{
 +  return identifier;
 +}
 +
 +//! This overload is called when T == ParameterType<T>::value.  An overload for
 +//! matrices is in cli.cpp.
 +template<typename T>
 +T& util::HandleParameter(
 +    typename util::ParameterType<T>::type& value,
 +    util::ParamData& /* d */,
 +    const typename boost::disable_if<arma::is_arma_type<T>>::type* /* junk */)
 +{
 +  return value;
 +}
 +
 +//! This is called for matrices, which have a different boost name.
 +template<typename T>
 +std::string util::MapParameterName(
 +    const std::string& identifier,
 +    const typename boost::enable_if<arma::is_arma_type<T>>::type* /* junk */)
 +{
 +  return identifier + "_file";
 +}
 +
 +//! This overload is called for matrices, which return a different type.
 +template<typename T>
 +T& util::HandleParameter(
 +    typename util::ParameterType<T>::type& value,
 +    util::ParamData& d,
 +    const typename boost::enable_if<arma::is_arma_type<T>>::type* /* junk */)
 +{
 +  // If the matrix is an input matrix, we have to load the matrix.  'value'
 +  // contains the filename.  It's possible we could load empty matrices many
 +  // times, but I am not bothered by that---it shouldn't be something that
 +  // happens.
 +  T& matrix = *boost::any_cast<T>(&d.mappedValue);
 +  if (d.input && !d.loaded)
    {
 -    gmap[key] = ParamData();
 -    gmap[key].value = boost::any(tmp);
 -    *boost::any_cast<T>(&gmap[key].value) = tmp;
 +    data::Load(value, matrix, true, !d.noTranspose);
 +    d.loaded = true;
    }
  
 -  // What if we have meta-data, but no data?
 -  boost::any val = gmap[key].value;
 -  if (val.empty())
 -    gmap[key].value = boost::any(tmp);
 -
 -  return *boost::any_cast<T>(&gmap[key].value);
 +  return matrix;
  }
  
+ template<typename T>
+ void CLI::AddOption(
+     const char* optId,
+     const char* descr,
+     const typename boost::disable_if<IsStdVector<T>>::type* /* junk */)
+ {
+   desc.add_options()(optId, po::value<T>(), descr);
+ }
+ 
+ template<typename T>
+ void CLI::AddOption(
+     const char* optId,
+     const char* descr,
+     const typename boost::enable_if<IsStdVector<T>>::type* /* junk */)
+ {
+   desc.add_options()(optId, po::value<T>()->multitoken(), descr);
+ }
+ 
  } // namespace mlpack
  
  #endif
diff --cc src/mlpack/methods/mean_shift/mean_shift_main.cpp
index 6e20559,270b68d..e88ea9c
--- a/src/mlpack/methods/mean_shift/mean_shift_main.cpp
+++ b/src/mlpack/methods/mean_shift/mean_shift_main.cpp
@@@ -2,8 -2,14 +2,13 @@@
   * @file mean_shift_main.cpp
   * @author Shangtong Zhang
   *
 - * Executable for running Mean Shift
 + * Executable for running Mean Shift.
+  *
+  * mlpack is free software; you may redistribute it and/or modify it under the
+  * terms of the 3-clause BSD license.  You should have received a copy of the
+  * 3-clause BSD license along with mlpack.  If not, see
+  * http://www.opensource.org/licenses/BSD-3-Clause for more information.
   */
 -
  #include <mlpack/core.hpp>
  #include <mlpack/core/kernels/gaussian_kernel.hpp>
  #include "mean_shift.hpp"




More information about the mlpack-git mailing list