sleipnirgroup-jormungandr 0.5.5.dev9__tar.gz → 0.5.6.dev2__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 (120) hide show
  1. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/interior_point.hpp +10 -2
  3. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/newton.hpp +6 -5
  4. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/sqp.hpp +8 -4
  5. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +6 -2
  6. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/print_diagnostics.hpp +34 -38
  7. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/src/sleipnir/__init__.py +1 -1
  8. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/CMakeLists.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/LICENSE.txt +0 -0
  10. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/README.md +0 -0
  11. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/SleipnirConfig.cmake.in +0 -0
  12. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/cmake/BuildTypes.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/cmake/CompilerFlags.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/cmake/Pybind11Mkdoc.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/cmake/SubdirList.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/cmake/arm-none-eabi.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/expression.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/gradient.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/gradient_expression_graph.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/hessian.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/slice.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/variable.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/multistart.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/ocp.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/problem.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/options.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/assert.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/concepts.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/empty.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/function_ref.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/pool.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/print.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/profiler.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/scope_exit.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/spy.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/include/sleipnir/util/symbol_exports.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/pyproject.toml +0 -0
  63. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  64. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  65. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  66. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  67. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_variable.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/binders.hpp +0 -0
  71. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/docstrings.hpp +0 -0
  72. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/for_each_type.hpp +0 -0
  73. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/main.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  75. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  76. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/bind_ocp.cpp +0 -0
  77. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/bind_problem.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/cpp/try_cast.hpp +0 -0
  84. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/src/sleipnir/autodiff/__init__.py +0 -0
  85. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/src/sleipnir/optimization/__init__.py +0 -0
  86. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/autodiff/gradient_test.py +0 -0
  87. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/autodiff/hessian_test.py +0 -0
  88. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/autodiff/jacobian_test.py +0 -0
  89. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/autodiff/variable_matrix_test.py +0 -0
  90. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/autodiff/variable_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/cart_pole_problem_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/cart_pole_util.py +0 -0
  95. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/constraints_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/decision_variable_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/differential_drive_problem_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/differential_drive_util.py +0 -0
  100. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/double_integrator_problem_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/flywheel_ocp_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/flywheel_problem_test.py +0 -0
  103. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/linear_problem_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/multistart_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/nonlinear_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/problem_spy_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/quadratic_problem_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/rk4.py +0 -0
  109. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/solver/exit_status_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/python/test/optimization/trivial_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/autodiff/gradient.cpp +0 -0
  112. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/autodiff/hessian.cpp +0 -0
  113. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/autodiff/jacobian.cpp +0 -0
  114. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/autodiff/variable_matrix.cpp +0 -0
  115. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/optimization/ocp.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/optimization/problem.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/optimization/solver/interior_point.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/optimization/solver/newton.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/optimization/solver/sqp.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.5.5.dev9 → sleipnirgroup_jormungandr-0.5.6.dev2}/src/util/pool.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.5.5.dev9
3
+ Version: 0.5.6.dev2
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -566,6 +566,10 @@ ExitStatus interior_point(
566
566
  trial_c_e.template lpNorm<1>() +
567
567
  (trial_c_i - trial_s).template lpNorm<1>(),
568
568
  trial_s.dot(trial_z), μ, solver.hessian_regularization(),
569
+ std::max(soc_step.p_x.template lpNorm<Eigen::Infinity>(),
570
+ soc_step.p_s.template lpNorm<Eigen::Infinity>()),
571
+ std::max(soc_step.p_y.template lpNorm<Eigen::Infinity>(),
572
+ soc_step.p_z.template lpNorm<Eigen::Infinity>()),
569
573
  α_soc, Scalar(1), α_reduction_factor, α_z_soc);
570
574
  }
571
575
  }};
@@ -795,8 +799,12 @@ ExitStatus interior_point(
795
799
  : IterationType::NORMAL,
796
800
  inner_iter_profiler.current_duration(), E_0, f,
797
801
  c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>(), s.dot(z),
798
- μ, solver.hessian_regularization(), α, α_max, α_reduction_factor,
799
- α_z);
802
+ μ, solver.hessian_regularization(),
803
+ std::max(step.p_x.template lpNorm<Eigen::Infinity>(),
804
+ step.p_s.template lpNorm<Eigen::Infinity>()),
805
+ std::max(step.p_y.template lpNorm<Eigen::Infinity>(),
806
+ step.p_z.template lpNorm<Eigen::Infinity>()),
807
+ α, α_max, α_reduction_factor, α_z);
800
808
  }
801
809
 
802
810
  ++iterations;
@@ -258,11 +258,12 @@ ExitStatus newton(
258
258
  inner_iter_profiler.stop();
259
259
 
260
260
  if (options.diagnostics) {
261
- print_iteration_diagnostics(iterations, IterationType::NORMAL,
262
- inner_iter_profiler.current_duration(), E_0,
263
- f, Scalar(0), Scalar(0), Scalar(0),
264
- solver.hessian_regularization(), α, α_max,
265
- α_reduction_factor, Scalar(1));
261
+ print_iteration_diagnostics(
262
+ iterations, IterationType::NORMAL,
263
+ inner_iter_profiler.current_duration(), E_0, f, Scalar(0), Scalar(0),
264
+ Scalar(0), solver.hessian_regularization(),
265
+ p_x.template lpNorm<Eigen::Infinity>(), Scalar(1), α, α_max,
266
+ α_reduction_factor, Scalar(1));
266
267
  }
267
268
 
268
269
  ++iterations;
@@ -394,8 +394,10 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
394
394
  kkt_error<Scalar, KKTErrorType::INF_NORM_SCALED>(
395
395
  g, A_e, trial_c_e, trial_y),
396
396
  trial_f, trial_c_e.template lpNorm<1>(), Scalar(0), Scalar(0),
397
- solver.hessian_regularization(), α_soc, Scalar(1),
398
- α_reduction_factor, Scalar(1));
397
+ solver.hessian_regularization(),
398
+ soc_step.p_x.template lpNorm<Eigen::Infinity>(),
399
+ soc_step.p_y.template lpNorm<Eigen::Infinity>(), α_soc,
400
+ Scalar(1), α_reduction_factor, Scalar(1));
399
401
  }
400
402
  }};
401
403
 
@@ -557,8 +559,10 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
557
559
  print_iteration_diagnostics(iterations, IterationType::NORMAL,
558
560
  inner_iter_profiler.current_duration(), E_0,
559
561
  f, c_e.template lpNorm<1>(), Scalar(0),
560
- Scalar(0), solver.hessian_regularization(), α,
561
- α_max, α_reduction_factor, α);
562
+ Scalar(0), solver.hessian_regularization(),
563
+ step.p_x.template lpNorm<Eigen::Infinity>(),
564
+ step.p_y.template lpNorm<Eigen::Infinity>(),
565
+ α, α_max, α_reduction_factor, α);
562
566
  }
563
567
 
564
568
  ++iterations;
@@ -68,8 +68,12 @@ class RegularizedLDLT {
68
68
  // We consider less than 25% to be sparse.
69
69
  m_is_sparse = lhs.nonZeros() < 0.25 * lhs.size();
70
70
 
71
- m_info = m_is_sparse ? compute_sparse(lhs).info()
72
- : m_dense_solver.compute(lhs).info();
71
+ // Regularization with zeros ensures the pattern analysis in
72
+ // compute_sparse() is reused by all factorizations
73
+ m_info =
74
+ m_is_sparse
75
+ ? compute_sparse(lhs + regularization(Scalar(0), Scalar(0))).info()
76
+ : m_dense_solver.compute(lhs).info();
73
77
 
74
78
  if (m_info == Eigen::Success) {
75
79
  auto D =
@@ -182,6 +182,8 @@ inline void print_bound_constraint_global_infeasibility_error(
182
182
  /// @param complementarity The complementarity.
183
183
  /// @param μ The barrier parameter.
184
184
  /// @param δ The Hessian regularization factor.
185
+ /// @param full_primal_step_inf_norm The infinity norm of the full primal step.
186
+ /// @param full_dual_step_inf_norm The infinity norm of the full dual step.
185
187
  /// @param primal_α The primal step size.
186
188
  /// @param primal_α_max The max primal step size.
187
189
  /// @param α_reduction_factor Factor by which primal_α is reduced during
@@ -192,33 +194,23 @@ void print_iteration_diagnostics(int iterations, IterationType type,
192
194
  const std::chrono::duration<Rep, Period>& time,
193
195
  Scalar error, Scalar cost,
194
196
  Scalar infeasibility, Scalar complementarity,
195
- Scalar μ, Scalar δ, Scalar primal_α,
196
- Scalar primal_α_max, Scalar α_reduction_factor,
197
- Scalar dual_α) {
197
+ Scalar μ, Scalar δ,
198
+ Scalar full_primal_step_inf_norm,
199
+ Scalar full_dual_step_inf_norm,
200
+ Scalar primal_α, Scalar primal_α_max,
201
+ Scalar α_reduction_factor, Scalar dual_α) {
198
202
  if (iterations % 20 == 0) {
199
203
  if (iterations == 0) {
200
- slp::print("┏");
204
+ slp::println("┏{:━^116}┓", "");
201
205
  } else {
202
- slp::print("┢");
203
- }
204
- slp::print(
205
- "{:━^4}┯{:━^4}┯{:━^9}┯{:━^12}┯{:━^13}┯{:━^12}┯{:━^12}┯{:━^8}┯{:━^5}┯"
206
- "{:━^8}┯{:━^8}┯{:━^2}",
207
- "", "", "", "", "", "", "", "", "", "", "", "");
208
- if (iterations == 0) {
209
- slp::println("┓");
210
- } else {
211
- slp::println("┪");
206
+ slp::println("┢{:━^116}┪", "");
212
207
  }
213
208
  slp::println(
214
- "┃{:^4}{:^4}{:^9}{:^12}{:^13}{:^12}{:^12}{:^8}{:^5}{:^8}{:^8}"
215
- "{:^2}┃",
216
- "iter", "type", "time (ms)", "error", "cost", "infeas.", "complement.",
217
- "μ", "reg", "primal α", "dual α", "↩");
218
- slp::println(
219
- "┡{:━^4}┷{:━^4}┷{:━^9}┷{:━^12}┷{:━^13}┷{:━^12}┷{:━^12}┷{:━^8}┷{:━^5}┷"
220
- "{:━^8}┷{:━^8}┷{:━^2}┩",
221
- "", "", "", "", "", "", "", "", "", "", "", "");
209
+ "┃{:^4} {:^4} {:^9} {:^10} {:^11} {:^10} {:^8} {:^8} {:^5} {:^8} {:^8} "
210
+ "{:^8} {:^8} {:^2}┃",
211
+ "iter", "type", "duration", "error", "cost", "infeas.", "complem.", "μ",
212
+ "δ", "|p_pr|", "|p_du|", "α_pr", "α_du", "↩");
213
+ slp::println("┡{:━^116}┩", "");
222
214
  }
223
215
 
224
216
  // For the number of backtracks, we want x such that:
@@ -237,10 +229,11 @@ void print_iteration_diagnostics(int iterations, IterationType type,
237
229
 
238
230
  constexpr std::array ITERATION_TYPES{"norm", "✓SOC", "XSOC", "rest"};
239
231
  slp::println(
240
- "│{:4} {:4} {:9.3f} {:12e} {:13e} {:12e} {:12e} {:.2e} {:<5} {:.2e} "
241
- "{:.2e} {:2d}│",
232
+ "│{:4} {:4} {:9.3f} {:.4e} {:11.4e} {:.4e} {:.2e} {:.2e} {:<5} {:.2e} "
233
+ "{:.2e} {:.2e} {:.2e} {:2d}│",
242
234
  iterations, ITERATION_TYPES[std::to_underlying(type)], to_ms(time), error,
243
- cost, infeasibility, complementarity, μ, power_of_10(δ), primal_α, dual_α,
235
+ cost, infeasibility, complementarity, μ, power_of_10(δ),
236
+ full_primal_step_inf_norm, full_dual_step_inf_norm, primal_α, dual_α,
244
237
  backtracks);
245
238
  }
246
239
  #else
@@ -250,7 +243,7 @@ void print_iteration_diagnostics(int iterations, IterationType type,
250
243
  #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
251
244
  /// Prints bottom of iteration diagnostics table.
252
245
  inline void print_bottom_iteration_diagnostics() {
253
- slp::println("└{:─^108}┘", "");
246
+ slp::println("└{:─^116}┘", "");
254
247
  }
255
248
  #else
256
249
  #define print_bottom_iteration_diagnostics(...)
@@ -296,10 +289,10 @@ inline void print_solver_diagnostics(
296
289
  const gch::small_vector<SolveProfiler>& solve_profilers) {
297
290
  auto solve_duration = to_ms(solve_profilers[0].total_duration());
298
291
 
299
- slp::println("┏{:━^21}┯{:━^18}┯{:━^10}┯{:━^9}┯{:━^4}┓", "", "", "", "", "");
300
- slp::println("┃{:^21}{:^18}{:^10}{:^9}{:^4}┃", "solver trace", "percent",
301
- "total (ms)", "each (ms)", "runs");
302
- slp::println("┡{:━^21}┷{:━^18}┷{:━^10}┷{:━^9}┷{:━^4}┩", "", "", "", "", "");
292
+ slp::println("┏{:━^66}┓", "");
293
+ slp::println("┃{:^21} {:^18} {:^10} {:^9} {:^4}┃", "time trace", "percentage",
294
+ "total", "each", "runs");
295
+ slp::println("┡{:━^66}┩", "");
303
296
 
304
297
  for (auto& profiler : solve_profilers) {
305
298
  double norm = solve_duration == 0.0
@@ -325,23 +318,26 @@ inline void print_setup_diagnostics(
325
318
  const gch::small_vector<SetupProfiler>& setup_profilers) {
326
319
  auto setup_duration = to_ms(setup_profilers[0].duration());
327
320
 
321
+ // Print link to diagnostic output description
322
+ slp::println(
323
+ "See https://sleipnirgroup.github.io/Sleipnir/md_usage.html#output for "
324
+ "diagnostic output description.\n");
325
+
328
326
  // Print heading
329
- slp::println("┏{:━^21}┯{:━^18}┯{:━^10}┯{:━^9}┯{:━^4}┓", "", "", "", "", "");
330
- slp::println("┃{:^21}{:^18}{:^10}│{:^9}│{:^4}┃", "setup trace", "percent",
331
- "total (ms)", "each (ms)", "runs");
332
- slp::println("┡{:━^21}┷{:━^18}┷{:━^10}┷{:━^9}┷{:━^4}┩", "", "", "", "", "");
327
+ slp::println("┏{:━^50}┓", "");
328
+ slp::println("┃{:^21} {:^18} {:^9}┃", "time trace", "percentage", "duration");
329
+ slp::println("┡{:━^50}┩", "");
333
330
 
334
331
  // Print setup profilers
335
332
  for (auto& profiler : setup_profilers) {
336
333
  double norm = setup_duration == 0.0
337
334
  ? (&profiler == &setup_profilers[0] ? 1.0 : 0.0)
338
335
  : to_ms(profiler.duration()) / setup_duration;
339
- slp::println("│{:<21} {:>6.2f}%▕{}▏ {:>10.3f} {:>9.3f} {:>4}│",
340
- profiler.name(), norm * 100.0, histogram<9>(norm),
341
- to_ms(profiler.duration()), to_ms(profiler.duration()), "1");
336
+ slp::println("│{:<21} {:>6.2f}%▕{}▏ {:>9.3f}│", profiler.name(),
337
+ norm * 100.0, histogram<9>(norm), to_ms(profiler.duration()));
342
338
  }
343
339
 
344
- slp::println("└{:─^66}┘", "");
340
+ slp::println("└{:─^50}┘", "");
345
341
  }
346
342
  #else
347
343
  #define print_setup_diagnostics(...)
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.5.5.dev9"
5
+ __version__ = "0.5.6.dev2"