sleipnirgroup-jormungandr 0.6.5.dev19__tar.gz → 0.6.5.dev21__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 (123) hide show
  1. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/variable_matrix.hpp +35 -27
  3. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_variable_matrix.cpp +2 -0
  4. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/docstrings.hpp +15 -0
  5. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/src/sleipnir/__init__.py +1 -1
  6. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/autodiff/variable_matrix_test.py +14 -0
  7. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/CMakeLists.txt +0 -0
  8. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/LICENSE.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/README.md +0 -0
  10. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/SleipnirConfig.cmake.in +0 -0
  11. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/cmake/BuildTypes.cmake +0 -0
  12. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/cmake/CompilerFlags.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/cmake/Pybind11Mkdoc.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/cmake/SubdirList.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/cmake/arm-none-eabi.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/expression.hpp +0 -0
  17. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/gradient.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/hessian.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/slice.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/variable.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/multistart.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/ocp.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/problem.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/interior_point.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/options.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/assert.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/concepts.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/empty.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/function_ref.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/pool.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/print.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/profiler.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/scope_exit.hpp +0 -0
  66. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/spy.hpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/include/sleipnir/util/symbol_exports.hpp +0 -0
  68. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/pyproject.toml +0 -0
  69. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_variable.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/binders.hpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/for_each_type.hpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/main.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/bind_ocp.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/bind_problem.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  87. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/cpp/try_cast.hpp +0 -0
  88. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/src/sleipnir/autodiff/__init__.py +0 -0
  89. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/src/sleipnir/optimization/__init__.py +0 -0
  90. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/autodiff/gradient_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/autodiff/hessian_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/autodiff/jacobian_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/autodiff/variable_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/cart_pole_problem_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/cart_pole_util.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/constraints_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/decision_variable_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/differential_drive_problem_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/differential_drive_util.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/double_integrator_problem_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/flywheel_ocp_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/flywheel_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/linear_problem_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/multistart_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/nonlinear_problem_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/problem_spy_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/quadratic_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/rk4.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/solver/exit_status_test.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/python/test/optimization/trivial_problem_test.py +0 -0
  114. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/autodiff/gradient.cpp +0 -0
  115. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/autodiff/hessian.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/autodiff/jacobian.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/autodiff/variable_matrix.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/optimization/ocp.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/optimization/problem.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/optimization/solver/interior_point.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/optimization/solver/newton.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/src/optimization/solver/sqp.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.6.5.dev19 → sleipnirgroup_jormungandr-0.6.5.dev21}/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.5.dev19
3
+ Version: 0.6.5.dev21
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -1001,6 +1001,23 @@ class VariableMatrix : public SleipnirBase {
1001
1001
  return result;
1002
1002
  }
1003
1003
 
1004
+ /// Converts the VariableMatrix to an Eigen matrix.
1005
+ ///
1006
+ /// @return Eigen matrix.
1007
+ Eigen::Matrix<Variable<Scalar>, Eigen::Dynamic, Eigen::Dynamic> to_eigen()
1008
+ const {
1009
+ Eigen::Matrix<Variable<Scalar>, Eigen::Dynamic, Eigen::Dynamic> result{
1010
+ rows(), cols()};
1011
+
1012
+ for (int row = 0; row < rows(); ++row) {
1013
+ for (int col = 0; col < cols(); ++col) {
1014
+ result[row, col] = (*this)[row, col];
1015
+ }
1016
+ }
1017
+
1018
+ return result;
1019
+ }
1020
+
1004
1021
  /// Transforms the matrix coefficient-wise with an unary operator.
1005
1022
  ///
1006
1023
  /// @param unary_op The unary operator to use for the transform operation.
@@ -1187,6 +1204,22 @@ class VariableMatrix : public SleipnirBase {
1187
1204
  /// @return Number of elements in matrix.
1188
1205
  size_t size() const { return m_storage.size(); }
1189
1206
 
1207
+ /// Returns an identity variable matrix.
1208
+ ///
1209
+ /// @param rows The number of matrix rows.
1210
+ /// @return An identity variable matrix.
1211
+ static VariableMatrix<Scalar> identity(int rows) {
1212
+ VariableMatrix<Scalar> result{detail::empty, rows, rows};
1213
+
1214
+ for (int row = 0; row < rows; ++row) {
1215
+ for (int col = 0; col < rows; ++col) {
1216
+ result[row, col] = row == col ? Scalar(1) : Scalar(0);
1217
+ }
1218
+ }
1219
+
1220
+ return result;
1221
+ }
1222
+
1190
1223
  /// Returns a variable matrix filled with zeros.
1191
1224
  ///
1192
1225
  /// @param rows The number of matrix rows.
@@ -1613,33 +1646,8 @@ VariableMatrix<Scalar> solve(const VariableMatrix<Scalar>& A,
1613
1646
  auto det_A = a * adj_A00 + b * adj_A10 + c * adj_A20 + d * adj_A30;
1614
1647
  return adj_A / det_A * B;
1615
1648
  } else {
1616
- using MatrixXv =
1617
- Eigen::Matrix<Variable<Scalar>, Eigen::Dynamic, Eigen::Dynamic>;
1618
-
1619
- MatrixXv eigen_A{A.rows(), A.cols()};
1620
- for (int row = 0; row < A.rows(); ++row) {
1621
- for (int col = 0; col < A.cols(); ++col) {
1622
- eigen_A[row, col] = A[row, col];
1623
- }
1624
- }
1625
-
1626
- MatrixXv eigen_B{B.rows(), B.cols()};
1627
- for (int row = 0; row < B.rows(); ++row) {
1628
- for (int col = 0; col < B.cols(); ++col) {
1629
- eigen_B[row, col] = B[row, col];
1630
- }
1631
- }
1632
-
1633
- MatrixXv eigen_X = eigen_A.householderQr().solve(eigen_B);
1634
-
1635
- VariableMatrix<Scalar> X{detail::empty, A.cols(), B.cols()};
1636
- for (int row = 0; row < X.rows(); ++row) {
1637
- for (int col = 0; col < X.cols(); ++col) {
1638
- X[row, col] = eigen_X[row, col];
1639
- }
1640
- }
1641
-
1642
- return X;
1649
+ return VariableMatrix<Scalar>{
1650
+ A.to_eigen().householderQr().solve(B.to_eigen())};
1643
1651
  }
1644
1652
  }
1645
1653
 
@@ -439,6 +439,8 @@ void bind_variable_matrix(nb::module_& autodiff,
439
439
  const std::function<Variable<double>(const Variable<double>& x)>&
440
440
  unary_op) { return self.cwise_transform(unary_op); },
441
441
  "func"_a, DOC(slp, VariableMatrix, cwise_transform));
442
+ cls.def_static("identity", &VariableMatrix<double>::identity, "rows"_a,
443
+ DOC(slp, VariableMatrix, identity));
442
444
  cls.def_static("zero", &VariableMatrix<double>::zero, "rows"_a, "cols"_a,
443
445
  DOC(slp, VariableMatrix, zero));
444
446
  cls.def_static("one", &VariableMatrix<double>::one, "rows"_a, "cols"_a,
@@ -1812,6 +1812,15 @@ R"doc(Returns const end iterator.
1812
1812
  Returns:
1813
1813
  Const end iterator.)doc";
1814
1814
 
1815
+ static const char *__doc_slp_VariableMatrix_identity =
1816
+ R"doc(Returns an identity variable matrix.
1817
+
1818
+ Parameter ``rows``:
1819
+ The number of matrix rows.
1820
+
1821
+ Returns:
1822
+ An identity variable matrix.)doc";
1823
+
1815
1824
  static const char *__doc_slp_VariableMatrix_iterator = R"doc()doc";
1816
1825
 
1817
1826
  static const char *__doc_slp_VariableMatrix_iterator_iterator = R"doc()doc";
@@ -2127,6 +2136,12 @@ R"doc(Returns number of elements in matrix.
2127
2136
  Returns:
2128
2137
  Number of elements in matrix.)doc";
2129
2138
 
2139
+ static const char *__doc_slp_VariableMatrix_to_eigen =
2140
+ R"doc(Converts the VariableMatrix to an Eigen matrix.
2141
+
2142
+ Returns:
2143
+ Eigen matrix.)doc";
2144
+
2130
2145
  static const char *__doc_slp_VariableMatrix_value =
2131
2146
  R"doc(Returns an element of the variable matrix.
2132
2147
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.5.dev19"
5
+ __version__ = "0.6.5.dev21"
@@ -358,9 +358,19 @@ def test_unary_broadcast():
358
358
  assert (result2.value() == expected2).all()
359
359
 
360
360
 
361
+ def test_identity_static_function():
362
+ A = VariableMatrix.identity(3)
363
+
364
+ assert A.shape == (3, 3)
365
+
366
+ assert (A.value() == np.identity(3)).all()
367
+
368
+
361
369
  def test_zero_static_function():
362
370
  A = VariableMatrix.zero(2, 3)
363
371
 
372
+ assert A.shape == (2, 3)
373
+
364
374
  for row in range(A.rows()):
365
375
  for col in range(A.cols()):
366
376
  assert A[row, col].value() == 0.0
@@ -369,6 +379,8 @@ def test_zero_static_function():
369
379
  def test_one_static_function():
370
380
  A = VariableMatrix.one(2, 3)
371
381
 
382
+ assert A.shape == (2, 3)
383
+
372
384
  for row in range(A.rows()):
373
385
  for col in range(A.cols()):
374
386
  assert A[row, col].value() == 1.0
@@ -377,6 +389,8 @@ def test_one_static_function():
377
389
  def test_constant_static_function():
378
390
  A = VariableMatrix.constant(2, 3, 2.0)
379
391
 
392
+ assert A.shape == (2, 3)
393
+
380
394
  for row in range(A.rows()):
381
395
  for col in range(A.cols()):
382
396
  assert A[row, col].value() == 2.0