sleipnirgroup-jormungandr 0.6.7.dev72__tar.gz → 0.6.7.dev73__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sleipnirgroup-jormungandr might be problematic. Click here for more details.
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/hessian_test.py +253 -1
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/Pybind11MkdocPostprocess.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/constraint_violation.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/time_trace.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/time_tracer.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/arity.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/slice_tuple.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/text_wrap.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/postprocess_stubs.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/util/pool.cpp +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import math
|
|
2
2
|
import operator
|
|
3
|
-
from collections.abc import Iterable
|
|
3
|
+
from collections.abc import Callable, Iterable
|
|
4
4
|
from functools import reduce
|
|
5
5
|
|
|
6
6
|
import numpy as np
|
|
@@ -210,6 +210,222 @@ def test_nested_powers() -> None:
|
|
|
210
210
|
assert H[0, 0] == pytest.approx(12 * x0 * x0, abs=1e-12)
|
|
211
211
|
|
|
212
212
|
|
|
213
|
+
def check_unary_hessian(
|
|
214
|
+
f: Callable[[Variable], Variable],
|
|
215
|
+
df: Callable[[float], float],
|
|
216
|
+
d2f: Callable[[float], float],
|
|
217
|
+
) -> None:
|
|
218
|
+
# y = f(u) where u = x₀x₁
|
|
219
|
+
#
|
|
220
|
+
# ∂²y/∂x₀² = f″(u) x₁²
|
|
221
|
+
# ∂²y/∂x₀∂x₁ = f″(u) x₀x₁ + f′(u)
|
|
222
|
+
# ∂²y/∂x₁² = f″(u) x₀²
|
|
223
|
+
x = VariableMatrix(2)
|
|
224
|
+
x[0].set_value(0.6)
|
|
225
|
+
x[1].set_value(0.7)
|
|
226
|
+
hessian = Hessian(f(x[0] * x[1]), x)
|
|
227
|
+
symbolic_H = hessian.get()
|
|
228
|
+
|
|
229
|
+
# Check symbolic Hessian at a point other than where it was built too
|
|
230
|
+
for x0, x1 in [(0.6, 0.7), (0.3, 0.7)]:
|
|
231
|
+
x[0].set_value(x0)
|
|
232
|
+
x[1].set_value(x1)
|
|
233
|
+
|
|
234
|
+
u = x0 * x1
|
|
235
|
+
mixed = d2f(u) * u + df(u)
|
|
236
|
+
expected = np.array([[d2f(u) * x1 * x1, mixed], [mixed, d2f(u) * x0 * x0]])
|
|
237
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
238
|
+
np.testing.assert_allclose(
|
|
239
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def test_division() -> None:
|
|
244
|
+
# y = x₀/x₁
|
|
245
|
+
#
|
|
246
|
+
# ∂²y/∂x₀² = 0
|
|
247
|
+
# ∂²y/∂x₀∂x₁ = −1/x₁²
|
|
248
|
+
# ∂²y/∂x₁² = 2x₀/x₁³
|
|
249
|
+
x = VariableMatrix(2)
|
|
250
|
+
hessian = Hessian(x[0] / x[1], x)
|
|
251
|
+
symbolic_H = hessian.get()
|
|
252
|
+
|
|
253
|
+
for x0, x1 in [(3.0, 2.0), (-1.5, 0.5)]:
|
|
254
|
+
x[0].set_value(x0)
|
|
255
|
+
x[1].set_value(x1)
|
|
256
|
+
|
|
257
|
+
mixed = -1.0 / (x1 * x1)
|
|
258
|
+
expected = np.array([[0.0, mixed], [mixed, 2.0 * x0 / (x1 * x1 * x1)]])
|
|
259
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
260
|
+
np.testing.assert_allclose(
|
|
261
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def test_unary_minus() -> None:
|
|
266
|
+
check_unary_hessian(lambda u: -u, lambda u: -1.0, lambda u: 0.0)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def test_abs() -> None:
|
|
270
|
+
check_unary_hessian(autodiff.abs, lambda u: 1.0, lambda u: 0.0)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def test_acos() -> None:
|
|
274
|
+
check_unary_hessian(
|
|
275
|
+
autodiff.acos,
|
|
276
|
+
lambda u: -1.0 / math.sqrt(1.0 - u * u),
|
|
277
|
+
lambda u: -u / math.sqrt(1.0 - u * u) ** 3,
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def test_asin() -> None:
|
|
282
|
+
check_unary_hessian(
|
|
283
|
+
autodiff.asin,
|
|
284
|
+
lambda u: 1.0 / math.sqrt(1.0 - u * u),
|
|
285
|
+
lambda u: u / math.sqrt(1.0 - u * u) ** 3,
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def test_atan() -> None:
|
|
290
|
+
check_unary_hessian(
|
|
291
|
+
autodiff.atan,
|
|
292
|
+
lambda u: 1.0 / (1.0 + u * u),
|
|
293
|
+
lambda u: -2.0 * u / ((1.0 + u * u) * (1.0 + u * u)),
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
def test_atan2() -> None:
|
|
298
|
+
# z = atan2(y, x)
|
|
299
|
+
#
|
|
300
|
+
# ∂²z/∂y² = −2xy/(x² + y²)²
|
|
301
|
+
# ∂²z/∂y∂x = (y² − x²)/(x² + y²)²
|
|
302
|
+
# ∂²z/∂x² = 2xy/(x² + y²)²
|
|
303
|
+
input = VariableMatrix(2)
|
|
304
|
+
hessian = Hessian(autodiff.atan2(input[0], input[1]), input)
|
|
305
|
+
symbolic_H = hessian.get()
|
|
306
|
+
|
|
307
|
+
for y, x in [(1.5, 0.5), (-0.7, 1.3)]:
|
|
308
|
+
input[0].set_value(y)
|
|
309
|
+
input[1].set_value(x)
|
|
310
|
+
|
|
311
|
+
d = x * x + y * y
|
|
312
|
+
mixed = (y * y - x * x) / (d * d)
|
|
313
|
+
expected = np.array(
|
|
314
|
+
[[-2.0 * x * y / (d * d), mixed], [mixed, 2.0 * x * y / (d * d)]]
|
|
315
|
+
)
|
|
316
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
317
|
+
np.testing.assert_allclose(
|
|
318
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
def test_cbrt() -> None:
|
|
323
|
+
check_unary_hessian(
|
|
324
|
+
autodiff.cbrt,
|
|
325
|
+
lambda u: 1.0 / (3.0 * math.cbrt(u) * math.cbrt(u)),
|
|
326
|
+
lambda u: -2.0 / (9.0 * u * math.cbrt(u) * math.cbrt(u)),
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
def test_cos() -> None:
|
|
331
|
+
check_unary_hessian(autodiff.cos, lambda u: -math.sin(u), lambda u: -math.cos(u))
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def test_cosh() -> None:
|
|
335
|
+
check_unary_hessian(autodiff.cosh, math.sinh, math.cosh)
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def test_erf() -> None:
|
|
339
|
+
check_unary_hessian(
|
|
340
|
+
autodiff.erf,
|
|
341
|
+
lambda u: 2.0 / math.sqrt(math.pi) * math.exp(-u * u),
|
|
342
|
+
lambda u: -4.0 / math.sqrt(math.pi) * u * math.exp(-u * u),
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
def test_exp() -> None:
|
|
347
|
+
check_unary_hessian(autodiff.exp, math.exp, math.exp)
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
def hypot_expected_H(v: np.ndarray) -> np.ndarray:
|
|
351
|
+
# y = ‖v‖
|
|
352
|
+
#
|
|
353
|
+
# ∂²y/∂vᵢ∂vⱼ = (‖v‖²δᵢⱼ − vᵢvⱼ)/‖v‖³
|
|
354
|
+
r2 = v @ v
|
|
355
|
+
return (r2 * np.eye(len(v)) - np.outer(v, v)) / (r2 * math.sqrt(r2))
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def test_hypot_two_arguments() -> None:
|
|
359
|
+
x = VariableMatrix(2)
|
|
360
|
+
hessian = Hessian(autodiff.hypot(x[0], x[1]), x)
|
|
361
|
+
symbolic_H = hessian.get()
|
|
362
|
+
|
|
363
|
+
for x0, x1 in [(1.3, 2.3), (-0.5, 1.5)]:
|
|
364
|
+
x[0].set_value(x0)
|
|
365
|
+
x[1].set_value(x1)
|
|
366
|
+
|
|
367
|
+
expected = hypot_expected_H(np.array([x0, x1]))
|
|
368
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
369
|
+
np.testing.assert_allclose(
|
|
370
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
def test_hypot_three_arguments() -> None:
|
|
375
|
+
x = VariableMatrix(3)
|
|
376
|
+
hessian = Hessian(autodiff.hypot(x[0], x[1], x[2]), x)
|
|
377
|
+
symbolic_H = hessian.get()
|
|
378
|
+
|
|
379
|
+
for v in [np.array([1.3, 2.3, 3.3]), np.array([-0.5, 1.5, -2.5])]:
|
|
380
|
+
x[0].set_value(v[0])
|
|
381
|
+
x[1].set_value(v[1])
|
|
382
|
+
x[2].set_value(v[2])
|
|
383
|
+
|
|
384
|
+
expected = hypot_expected_H(v)
|
|
385
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
386
|
+
np.testing.assert_allclose(
|
|
387
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
388
|
+
)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def test_hypot_repeated_argument() -> None:
|
|
392
|
+
# y = hypot(a, b, a) = √(2a² + b²)
|
|
393
|
+
#
|
|
394
|
+
# ∂²y/∂a² = (2y² − 4a²)/y³
|
|
395
|
+
# ∂²y/∂a∂b = −2ab/y³
|
|
396
|
+
# ∂²y/∂b² = (y² − b²)/y³
|
|
397
|
+
x = VariableMatrix(2)
|
|
398
|
+
hessian = Hessian(autodiff.hypot(x[0], x[1], x[0]), x)
|
|
399
|
+
symbolic_H = hessian.get()
|
|
400
|
+
|
|
401
|
+
for a, b in [(1.3, 2.3), (-0.5, 1.5)]:
|
|
402
|
+
x[0].set_value(a)
|
|
403
|
+
x[1].set_value(b)
|
|
404
|
+
|
|
405
|
+
y2 = 2.0 * a * a + b * b
|
|
406
|
+
y3 = y2 * math.sqrt(y2)
|
|
407
|
+
mixed = -2.0 * a * b / y3
|
|
408
|
+
expected = np.array(
|
|
409
|
+
[[(2.0 * y2 - 4.0 * a * a) / y3, mixed], [mixed, (y2 - b * b) / y3]]
|
|
410
|
+
)
|
|
411
|
+
np.testing.assert_allclose(symbolic_H.value(), expected, rtol=0.0, atol=1e-12)
|
|
412
|
+
np.testing.assert_allclose(
|
|
413
|
+
hessian.value().todense(), expected, rtol=0.0, atol=1e-12
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
def test_log() -> None:
|
|
418
|
+
check_unary_hessian(autodiff.log, lambda u: 1.0 / u, lambda u: -1.0 / (u * u))
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
def test_log10() -> None:
|
|
422
|
+
check_unary_hessian(
|
|
423
|
+
autodiff.log10,
|
|
424
|
+
lambda u: 1.0 / (math.log(10.0) * u),
|
|
425
|
+
lambda u: -1.0 / (math.log(10.0) * u * u),
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
|
|
213
429
|
def test_max_and_min() -> None:
|
|
214
430
|
input = VariableMatrix(2)
|
|
215
431
|
expected_y = np.array([[0.0, 0.0], [0.0, 2.0]])
|
|
@@ -266,6 +482,42 @@ def test_pow() -> None:
|
|
|
266
482
|
)
|
|
267
483
|
|
|
268
484
|
|
|
485
|
+
def test_sign() -> None:
|
|
486
|
+
check_unary_hessian(autodiff.sign, lambda u: 0.0, lambda u: 0.0)
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
def test_sin() -> None:
|
|
490
|
+
check_unary_hessian(autodiff.sin, math.cos, lambda u: -math.sin(u))
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
def test_sinh() -> None:
|
|
494
|
+
check_unary_hessian(autodiff.sinh, math.cosh, math.sinh)
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
def test_sqrt() -> None:
|
|
498
|
+
check_unary_hessian(
|
|
499
|
+
autodiff.sqrt,
|
|
500
|
+
lambda u: 1.0 / (2.0 * math.sqrt(u)),
|
|
501
|
+
lambda u: -1.0 / (4.0 * u * math.sqrt(u)),
|
|
502
|
+
)
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
def test_tan() -> None:
|
|
506
|
+
check_unary_hessian(
|
|
507
|
+
autodiff.tan,
|
|
508
|
+
lambda u: 1.0 / (math.cos(u) * math.cos(u)),
|
|
509
|
+
lambda u: 2.0 * math.tan(u) / (math.cos(u) * math.cos(u)),
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
def test_tanh() -> None:
|
|
514
|
+
check_unary_hessian(
|
|
515
|
+
autodiff.tanh,
|
|
516
|
+
lambda u: 1.0 / (math.cosh(u) * math.cosh(u)),
|
|
517
|
+
lambda u: -2.0 * math.tanh(u) / (math.cosh(u) * math.cosh(u)),
|
|
518
|
+
)
|
|
519
|
+
|
|
520
|
+
|
|
269
521
|
def test_rosenbrock() -> None:
|
|
270
522
|
# z = (1 − x)² + 100(y − x²)²
|
|
271
523
|
# = 100(−x² + y)² + (−x + 1)²
|
{sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/CMakeLists.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/pyproject.toml
RENAMED
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/arity.hpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/main.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/util/pool.cpp
RENAMED
|
File without changes
|