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.

Files changed (129) hide show
  1. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/__init__.py +1 -1
  3. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/hessian_test.py +253 -1
  4. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/CMakeLists.txt +0 -0
  5. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/LICENSE.txt +0 -0
  6. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/README.md +0 -0
  7. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/SleipnirConfig.cmake.in +0 -0
  8. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/BuildTypes.cmake +0 -0
  9. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/CompilerFlags.cmake +0 -0
  10. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/Pybind11Mkdoc.cmake +0 -0
  11. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/Pybind11MkdocPostprocess.cmake +0 -0
  12. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/SubdirList.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/cmake/arm-none-eabi.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression.hpp +0 -0
  15. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  16. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  17. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/gradient.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/hessian.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/slice.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/multistart.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/ocp.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/problem.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/options.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/constraint_violation.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  47. {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
  48. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/optimization/solver/util/time_trace.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/assert.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/concepts.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/empty.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/function_ref.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/pool.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/print.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/scope_exit.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/spy.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/symbol_exports.hpp +0 -0
  66. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/include/sleipnir/util/time_tracer.hpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/pyproject.toml +0 -0
  68. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/arity.hpp +0 -0
  69. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/binders.hpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/docstrings.hpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/for_each_type.hpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/main.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_ocp.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/bind_problem.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  87. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  88. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  89. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/slice_tuple.hpp +0 -0
  90. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/text_wrap.hpp +0 -0
  91. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/cpp/try_cast.hpp +0 -0
  92. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/postprocess_stubs.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/autodiff/__init__.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/src/sleipnir/optimization/__init__.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/gradient_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/jacobian_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/variable_matrix_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/autodiff/variable_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_problem_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/cart_pole_util.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/constraints_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/decision_variable_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_problem_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/differential_drive_util.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/double_integrator_problem_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/flywheel_ocp_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/flywheel_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/linear_problem_test.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/multistart_test.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/near.py +0 -0
  114. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/nonlinear_problem_test.py +0 -0
  115. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/problem_spy_test.py +0 -0
  116. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/quadratic_problem_test.py +0 -0
  117. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/rk4.py +0 -0
  118. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/solver/exit_status_test.py +0 -0
  119. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/python/test/optimization/trivial_problem_test.py +0 -0
  120. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/gradient.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/hessian.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/jacobian.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/autodiff/variable_matrix.cpp +0 -0
  124. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/ocp.cpp +0 -0
  125. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/problem.cpp +0 -0
  126. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/ipm.cpp +0 -0
  127. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/newton.cpp +0 -0
  128. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/optimization/solver/sqp.cpp +0 -0
  129. {sleipnirgroup_jormungandr-0.6.7.dev72 → sleipnirgroup_jormungandr-0.6.7.dev73}/src/util/pool.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.6.7.dev72
3
+ Version: 0.6.7.dev73
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.7.dev72"
5
+ __version__ = "0.6.7.dev73"
@@ -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)²