sleipnirgroup-jormungandr 0.5.5.dev8__tar.gz → 0.5.6.dev4__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.
Files changed (120) hide show
  1. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/variable_matrix.hpp +2 -2
  3. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/interior_point.hpp +10 -2
  4. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/newton.hpp +6 -5
  5. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/sqp.hpp +8 -4
  6. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +9 -2
  7. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/print_diagnostics.hpp +34 -38
  8. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/docstrings.hpp +2 -2
  9. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/src/sleipnir/__init__.py +1 -1
  10. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/CMakeLists.txt +0 -0
  11. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/LICENSE.txt +0 -0
  12. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/README.md +0 -0
  13. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/SleipnirConfig.cmake.in +0 -0
  14. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/cmake/BuildTypes.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/cmake/CompilerFlags.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/cmake/Pybind11Mkdoc.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/cmake/SubdirList.cmake +0 -0
  18. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/cmake/arm-none-eabi.cmake +0 -0
  19. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/expression.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/gradient.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/gradient_expression_graph.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/hessian.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/slice.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/variable.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/multistart.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/ocp.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/problem.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/options.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/assert.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/concepts.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/empty.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/function_ref.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/pool.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/print.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/profiler.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/scope_exit.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/spy.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/include/sleipnir/util/symbol_exports.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/pyproject.toml +0 -0
  64. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  65. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  66. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  67. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_variable.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/binders.hpp +0 -0
  72. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/for_each_type.hpp +0 -0
  73. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/main.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  75. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  76. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/bind_ocp.cpp +0 -0
  77. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/bind_problem.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/cpp/try_cast.hpp +0 -0
  84. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/src/sleipnir/autodiff/__init__.py +0 -0
  85. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/src/sleipnir/optimization/__init__.py +0 -0
  86. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/autodiff/gradient_test.py +0 -0
  87. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/autodiff/hessian_test.py +0 -0
  88. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/autodiff/jacobian_test.py +0 -0
  89. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/autodiff/variable_matrix_test.py +0 -0
  90. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/autodiff/variable_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/cart_pole_problem_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/cart_pole_util.py +0 -0
  95. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/constraints_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/decision_variable_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/differential_drive_problem_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/differential_drive_util.py +0 -0
  100. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/double_integrator_problem_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/flywheel_ocp_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/flywheel_problem_test.py +0 -0
  103. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/linear_problem_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/multistart_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/nonlinear_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/problem_spy_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/quadratic_problem_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/rk4.py +0 -0
  109. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/solver/exit_status_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/python/test/optimization/trivial_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/autodiff/gradient.cpp +0 -0
  112. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/autodiff/hessian.cpp +0 -0
  113. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/autodiff/jacobian.cpp +0 -0
  114. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/autodiff/variable_matrix.cpp +0 -0
  115. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/optimization/ocp.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/optimization/problem.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/optimization/solver/interior_point.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/optimization/solver/newton.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/src/optimization/solver/sqp.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.5.5.dev8 → sleipnirgroup_jormungandr-0.5.6.dev4}/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.dev8
3
+ Version: 0.5.6.dev4
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -1184,11 +1184,11 @@ class VariableMatrix : public SleipnirBase {
1184
1184
  /// @return Number of elements in matrix.
1185
1185
  size_t size() const { return m_storage.size(); }
1186
1186
 
1187
- /// Returns a variable matrix filled with zeroes.
1187
+ /// Returns a variable matrix filled with zeros.
1188
1188
  ///
1189
1189
  /// @param rows The number of matrix rows.
1190
1190
  /// @param cols The number of matrix columns.
1191
- /// @return A variable matrix filled with zeroes.
1191
+ /// @return A variable matrix filled with zeros.
1192
1192
  static VariableMatrix<Scalar> zero(int rows, int cols) {
1193
1193
  VariableMatrix<Scalar> result{detail::empty, rows, cols};
1194
1194
 
@@ -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;
@@ -56,6 +56,9 @@ class RegularizedLDLT {
56
56
 
57
57
  /// Computes the regularized LDLT factorization of a matrix.
58
58
  ///
59
+ /// The matrix's symbolic decomposition is reused in subsequent calls, so
60
+ /// subsequent calls must be given a matrix with the same sparsity pattern.
61
+ ///
59
62
  /// @param lhs Left-hand side of the system.
60
63
  /// @return The factorization.
61
64
  RegularizedLDLT& compute(const SparseMatrix& lhs) {
@@ -65,8 +68,12 @@ class RegularizedLDLT {
65
68
  // We consider less than 25% to be sparse.
66
69
  m_is_sparse = lhs.nonZeros() < 0.25 * lhs.size();
67
70
 
68
- m_info = m_is_sparse ? compute_sparse(lhs).info()
69
- : 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();
70
77
 
71
78
  if (m_info == Eigen::Success) {
72
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(...)
@@ -2152,7 +2152,7 @@ Returns:
2152
2152
  The contents of the variable matrix.)doc";
2153
2153
 
2154
2154
  static const char *__doc_slp_VariableMatrix_zero =
2155
- R"doc(Returns a variable matrix filled with zeroes.
2155
+ R"doc(Returns a variable matrix filled with zeros.
2156
2156
 
2157
2157
  Parameter ``rows``:
2158
2158
  The number of matrix rows.
@@ -2161,7 +2161,7 @@ Parameter ``cols``:
2161
2161
  The number of matrix columns.
2162
2162
 
2163
2163
  Returns:
2164
- A variable matrix filled with zeroes.)doc";
2164
+ A variable matrix filled with zeros.)doc";
2165
2165
 
2166
2166
  static const char *__doc_slp_Variable_Variable = R"doc(Constructs a linear Variable with a value of zero.)doc";
2167
2167
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.5.5.dev8"
5
+ __version__ = "0.5.6.dev4"