sleipnirgroup-jormungandr 0.6.7.dev12__tar.gz → 0.6.7.dev14__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 (122) hide show
  1. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/expression.hpp +102 -49
  3. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/variable.hpp +1 -1
  4. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/src/sleipnir/__init__.py +1 -1
  5. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/CMakeLists.txt +0 -0
  6. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/LICENSE.txt +0 -0
  7. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/README.md +0 -0
  8. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/SleipnirConfig.cmake.in +0 -0
  9. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/cmake/BuildTypes.cmake +0 -0
  10. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/cmake/CompilerFlags.cmake +0 -0
  11. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/cmake/Pybind11Mkdoc.cmake +0 -0
  12. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/cmake/SubdirList.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/cmake/arm-none-eabi.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  15. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  16. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/gradient.hpp +0 -0
  17. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/hessian.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/slice.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/multistart.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/ocp.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/problem.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/options.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/assert.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/concepts.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/empty.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/function_ref.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/pool.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/print.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/profiler.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/scope_exit.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/spy.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/include/sleipnir/util/symbol_exports.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/pyproject.toml +0 -0
  65. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  66. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_variable.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/binders.hpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/docstrings.hpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/for_each_type.hpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/main.cpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/bind_ocp.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/bind_problem.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/cpp/try_cast.hpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/src/sleipnir/autodiff/__init__.py +0 -0
  87. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/src/sleipnir/optimization/__init__.py +0 -0
  88. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/autodiff/gradient_test.py +0 -0
  89. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/autodiff/hessian_test.py +0 -0
  90. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/autodiff/jacobian_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/autodiff/variable_matrix_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/autodiff/variable_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/cart_pole_problem_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/cart_pole_util.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/constraints_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/decision_variable_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/differential_drive_problem_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/differential_drive_util.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/double_integrator_problem_test.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/flywheel_ocp_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/flywheel_problem_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/linear_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/multistart_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/nonlinear_problem_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/problem_spy_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/quadratic_problem_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/rk4.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/solver/exit_status_test.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/python/test/optimization/trivial_problem_test.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/autodiff/gradient.cpp +0 -0
  114. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/autodiff/hessian.cpp +0 -0
  115. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/autodiff/jacobian.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/autodiff/variable_matrix.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/optimization/ocp.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/optimization/problem.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/optimization/solver/ipm.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/optimization/solver/newton.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/src/optimization/solver/sqp.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.7.dev12 → sleipnirgroup_jormungandr-0.6.7.dev14}/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.dev12
3
+ Version: 0.6.7.dev14
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -31,11 +31,6 @@ inline constexpr bool USE_POOL_ALLOCATOR = true;
31
31
  template <typename Scalar>
32
32
  struct Expression;
33
33
 
34
- template <typename Scalar>
35
- constexpr void inc_ref_count(Expression<Scalar>* expr);
36
- template <typename Scalar>
37
- constexpr void dec_ref_count(Expression<Scalar>* expr);
38
-
39
34
  /// Typedef for intrusive shared pointer to Expression.
40
35
  ///
41
36
  /// @tparam Scalar Scalar type.
@@ -63,9 +58,6 @@ struct BinaryMinusExpression;
63
58
  template <typename Scalar, ExpressionType T>
64
59
  struct BinaryPlusExpression;
65
60
 
66
- template <typename Scalar>
67
- struct ConstantExpression;
68
-
69
61
  template <typename Scalar, ExpressionType T>
70
62
  struct DivExpression;
71
63
 
@@ -377,24 +369,6 @@ struct Expression {
377
369
  virtual void accumulate_adjoints_expr() const {}
378
370
  };
379
371
 
380
- template <typename Scalar>
381
- ExpressionPtr<Scalar> constant_ptr(Scalar value) {
382
- return make_expression_ptr<ConstantExpression<Scalar>>(value);
383
- }
384
-
385
- template <typename Scalar>
386
- ExpressionPtr<Scalar> cbrt(const ExpressionPtr<Scalar>& x);
387
- template <typename Scalar>
388
- ExpressionPtr<Scalar> exp(const ExpressionPtr<Scalar>& x);
389
- template <typename Scalar>
390
- ExpressionPtr<Scalar> sign(const ExpressionPtr<Scalar>& x);
391
- template <typename Scalar>
392
- ExpressionPtr<Scalar> sin(const ExpressionPtr<Scalar>& x);
393
- template <typename Scalar>
394
- ExpressionPtr<Scalar> sinh(const ExpressionPtr<Scalar>& x);
395
- template <typename Scalar>
396
- ExpressionPtr<Scalar> sqrt(const ExpressionPtr<Scalar>& x);
397
-
398
372
  /// Derived expression type for binary minus operator.
399
373
  ///
400
374
  /// @tparam Scalar Scalar type.
@@ -589,6 +563,11 @@ struct ConstantExpression final : Expression<Scalar> {
589
563
  std::string_view name() const override { return "constant"; }
590
564
  };
591
565
 
566
+ template <typename Scalar>
567
+ ExpressionPtr<Scalar> constant_ptr(Scalar value) {
568
+ return make_expression_ptr<ConstantExpression<Scalar>>(value);
569
+ }
570
+
592
571
  /// Derived expression type for decision variable.
593
572
  ///
594
573
  /// @tparam Scalar Scalar type.
@@ -1417,11 +1396,11 @@ template <typename Scalar>
1417
1396
  ExpressionPtr<Scalar> hypot(const ExpressionPtr<Scalar>& x,
1418
1397
  const ExpressionPtr<Scalar>& y);
1419
1398
 
1420
- /// Derived expression type for hypot().
1399
+ /// Derived expression type for hypot() with two arguments.
1421
1400
  ///
1422
1401
  /// @tparam Scalar Scalar type.
1423
1402
  template <typename Scalar>
1424
- struct HypotExpression final : Expression<Scalar> {
1403
+ struct Hypot2Expression final : Expression<Scalar> {
1425
1404
  /// Binary operator's left operand.
1426
1405
  ExpressionPtr<Scalar> x;
1427
1406
 
@@ -1432,7 +1411,7 @@ struct HypotExpression final : Expression<Scalar> {
1432
1411
  ///
1433
1412
  /// @param x Binary operator's left operand.
1434
1413
  /// @param y Binary operator's right operand.
1435
- constexpr HypotExpression(ExpressionPtr<Scalar> x, ExpressionPtr<Scalar> y)
1414
+ constexpr Hypot2Expression(ExpressionPtr<Scalar> x, ExpressionPtr<Scalar> y)
1436
1415
  : x{std::move(x)}, y{std::move(y)} {}
1437
1416
 
1438
1417
  void visit_args(
@@ -1451,32 +1430,102 @@ struct HypotExpression final : Expression<Scalar> {
1451
1430
  std::string_view name() const override { return "hypot"; }
1452
1431
 
1453
1432
  void accumulate_adjoints() const override {
1454
- x->adj += grad_l();
1455
- y->adj += grad_r();
1433
+ using std::hypot;
1434
+ Scalar norm = hypot(x->val, y->val);
1435
+ x->adj += this->adj * x->val / norm;
1436
+ y->adj += this->adj * y->val / norm;
1456
1437
  }
1457
1438
 
1458
1439
  void accumulate_adjoints_expr() const override {
1459
- x->adj_expr += grad_expr_l();
1460
- y->adj_expr += grad_expr_r();
1440
+ auto norm = hypot(x, y);
1441
+ x->adj_expr += this->adj_expr * x / norm;
1442
+ y->adj_expr += this->adj_expr * y / norm;
1461
1443
  }
1444
+ };
1462
1445
 
1463
- private:
1464
- Scalar grad_l() const {
1465
- using std::hypot;
1466
- return this->adj * x->val / hypot(x->val, y->val);
1446
+ /// hypot() for Expressions.
1447
+ ///
1448
+ /// @tparam Scalar Scalar type.
1449
+ /// @param x The x argument.
1450
+ /// @param y The y argument.
1451
+ template <typename Scalar>
1452
+ ExpressionPtr<Scalar> hypot(const ExpressionPtr<Scalar>& x,
1453
+ const ExpressionPtr<Scalar>& y) {
1454
+ using enum ExpressionType;
1455
+ using std::hypot;
1456
+
1457
+ // Prune expression
1458
+ if (x->is_constant(Scalar(0))) {
1459
+ return abs(y);
1460
+ } else if (y->is_constant(Scalar(0))) {
1461
+ return abs(x);
1467
1462
  }
1468
1463
 
1469
- Scalar grad_r() const {
1464
+ // Evaluate constant
1465
+ if (x->type() == CONSTANT && y->type() == CONSTANT) {
1466
+ return constant_ptr(hypot(x->val, y->val));
1467
+ }
1468
+
1469
+ return make_expression_ptr<Hypot2Expression<Scalar>>(x, y);
1470
+ }
1471
+
1472
+ template <typename Scalar>
1473
+ ExpressionPtr<Scalar> hypot(const ExpressionPtr<Scalar>& x,
1474
+ const ExpressionPtr<Scalar>& y,
1475
+ const ExpressionPtr<Scalar>& z);
1476
+
1477
+ /// Derived expression type for hypot() with three arguments.
1478
+ ///
1479
+ /// @tparam Scalar Scalar type.
1480
+ template <typename Scalar>
1481
+ struct Hypot3Expression final : Expression<Scalar> {
1482
+ /// Ternary operator's first operand.
1483
+ ExpressionPtr<Scalar> x;
1484
+
1485
+ /// Ternary operator's second operand.
1486
+ ExpressionPtr<Scalar> y;
1487
+
1488
+ /// Ternary operator's third operand.
1489
+ ExpressionPtr<Scalar> z;
1490
+
1491
+ /// Constructs a ternary expression (an operator with three arguments).
1492
+ ///
1493
+ /// @param x Ternary operator's first operand.
1494
+ /// @param y Ternary operator's second operand.
1495
+ /// @param z Ternary operator's third operand.
1496
+ constexpr Hypot3Expression(ExpressionPtr<Scalar> x, ExpressionPtr<Scalar> y,
1497
+ ExpressionPtr<Scalar> z)
1498
+ : x{std::move(x)}, y{std::move(y)}, z{std::move(z)} {}
1499
+
1500
+ void visit_args(
1501
+ function_ref<void(Expression<Scalar>* arg)> func) const override {
1502
+ func(x.get());
1503
+ func(y.get());
1504
+ func(z.get());
1505
+ }
1506
+
1507
+ Scalar value() const override {
1470
1508
  using std::hypot;
1471
- return this->adj * y->val / hypot(x->val, y->val);
1509
+ return hypot(x->val, y->val, z->val);
1472
1510
  }
1473
1511
 
1474
- ExpressionPtr<Scalar> grad_expr_l() const {
1475
- return this->adj_expr * x / hypot(x, y);
1512
+ ExpressionType type() const override { return ExpressionType::NONLINEAR; }
1513
+
1514
+ std::string_view name() const override { return "hypot"; }
1515
+
1516
+ void accumulate_adjoints() const override {
1517
+ using std::hypot;
1518
+ Scalar norm = hypot(x->val, y->val, z->val);
1519
+ x->adj += this->adj * x->val / norm;
1520
+ y->adj += this->adj * y->val / norm;
1521
+ z->adj += this->adj * z->val / norm;
1476
1522
  }
1477
1523
 
1478
- ExpressionPtr<Scalar> grad_expr_r() const {
1479
- return this->adj_expr * y / hypot(x, y);
1524
+ void accumulate_adjoints_expr() const override {
1525
+ auto norm = hypot(x, y, z);
1526
+ x->adj_expr += this->adj_expr * x / norm;
1527
+ y->adj_expr += this->adj_expr * y / norm;
1528
+ z->adj_expr += this->adj_expr * z / norm;
1480
1529
  }
1481
1530
  };
1482
1531
 
@@ -1485,25 +1534,29 @@ struct HypotExpression final : Expression<Scalar> {
1485
1534
  /// @tparam Scalar Scalar type.
1486
1535
  /// @param x The x argument.
1487
1536
  /// @param y The y argument.
1537
+ /// @param z The z argument.
1488
1538
  template <typename Scalar>
1489
1539
  ExpressionPtr<Scalar> hypot(const ExpressionPtr<Scalar>& x,
1490
- const ExpressionPtr<Scalar>& y) {
1540
+ const ExpressionPtr<Scalar>& y,
1541
+ const ExpressionPtr<Scalar>& z) {
1491
1542
  using enum ExpressionType;
1492
1543
  using std::hypot;
1493
1544
 
1494
1545
  // Prune expression
1495
1546
  if (x->is_constant(Scalar(0))) {
1496
- return abs(y);
1547
+ return hypot(y, z);
1497
1548
  } else if (y->is_constant(Scalar(0))) {
1498
- return abs(x);
1549
+ return hypot(x, z);
1550
+ } else if (z->is_constant(Scalar(0))) {
1551
+ return hypot(x, y);
1499
1552
  }
1500
1553
 
1501
1554
  // Evaluate constant
1502
- if (x->type() == CONSTANT && y->type() == CONSTANT) {
1503
- return constant_ptr(hypot(x->val, y->val));
1555
+ if (x->type() == CONSTANT && y->type() == CONSTANT && z->type() == CONSTANT) {
1556
+ return constant_ptr(hypot(x->val, y->val, z->val));
1504
1557
  }
1505
1558
 
1506
- return make_expression_ptr<HypotExpression<Scalar>>(x, y);
1559
+ return make_expression_ptr<Hypot3Expression<Scalar>>(x, y, z);
1507
1560
  }
1508
1561
 
1509
1562
  /// Derived expression type for is_nonnegative().
@@ -708,7 +708,7 @@ Variable<Scalar> tanh(const Variable<Scalar>& x) {
708
708
  template <typename Scalar>
709
709
  Variable<Scalar> hypot(const Variable<Scalar>& x, const Variable<Scalar>& y,
710
710
  const Variable<Scalar>& z) {
711
- return Variable{sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2))};
711
+ return Variable{detail::hypot(x.expr, y.expr, z.expr)};
712
712
  }
713
713
 
714
714
  // The standard form for equality constraints is c(x) = 0, and the standard form
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.7.dev12"
5
+ __version__ = "0.6.7.dev14"