deriweave-python 0.3.0__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 (572) hide show
  1. deriweave_python-0.3.0/.gitattributes +6 -0
  2. deriweave_python-0.3.0/.github/workflows/tests.yml +42 -0
  3. deriweave_python-0.3.0/.gitignore +18 -0
  4. deriweave_python-0.3.0/CHANGELOG.md +14 -0
  5. deriweave_python-0.3.0/CMakeLists.txt +60 -0
  6. deriweave_python-0.3.0/INSTALL_WINDOWS.bat +36 -0
  7. deriweave_python-0.3.0/LICENSE +21 -0
  8. deriweave_python-0.3.0/PKG-INFO +211 -0
  9. deriweave_python-0.3.0/README.md +189 -0
  10. deriweave_python-0.3.0/benchmarks/benchmark.py +45 -0
  11. deriweave_python-0.3.0/benchmarks/results_windows.json +56 -0
  12. deriweave_python-0.3.0/bindings/composition.cpp +538 -0
  13. deriweave_python-0.3.0/bindings/module.cpp +242 -0
  14. deriweave_python-0.3.0/cmake/Eigen3Config.cmake.in +9 -0
  15. deriweave_python-0.3.0/docs/AUDIT.md +260 -0
  16. deriweave_python-0.3.0/docs/coverage.md +120 -0
  17. deriweave_python-0.3.0/docs/files-changed.md +81 -0
  18. deriweave_python-0.3.0/docs/guide.md +255 -0
  19. deriweave_python-0.3.0/docs/native-changes.patch +288 -0
  20. deriweave_python-0.3.0/docs/release.md +93 -0
  21. deriweave_python-0.3.0/examples/composition_demo.py +50 -0
  22. deriweave_python-0.3.0/examples/demo.py +30 -0
  23. deriweave_python-0.3.0/examples/exercise_demo.py +16 -0
  24. deriweave_python-0.3.0/examples/models_demo.py +25 -0
  25. deriweave_python-0.3.0/examples/structured_demo.py +19 -0
  26. deriweave_python-0.3.0/native-engine.json +67 -0
  27. deriweave_python-0.3.0/prepare_windows.py +147 -0
  28. deriweave_python-0.3.0/pyproject.toml +55 -0
  29. deriweave_python-0.3.0/src/deriweave_py/__init__.py +112 -0
  30. deriweave_python-0.3.0/src/deriweave_py/_core.pyi +108 -0
  31. deriweave_python-0.3.0/src/deriweave_py/composition.py +560 -0
  32. deriweave_python-0.3.0/src/deriweave_py/py.typed +0 -0
  33. deriweave_python-0.3.0/src/deriweave_py/structured.py +165 -0
  34. deriweave_python-0.3.0/tests/native_reference.cpp +129 -0
  35. deriweave_python-0.3.0/tests/reference_cases.py +78 -0
  36. deriweave_python-0.3.0/tests/test_composition.py +122 -0
  37. deriweave_python-0.3.0/tests/test_contracts.py +93 -0
  38. deriweave_python-0.3.0/tests/test_exercise.py +81 -0
  39. deriweave_python-0.3.0/tests/test_financial.py +89 -0
  40. deriweave_python-0.3.0/tests/test_native_parity.py +49 -0
  41. deriweave_python-0.3.0/tests/test_numeric_limits.py +37 -0
  42. deriweave_python-0.3.0/tests/test_preparation.py +72 -0
  43. deriweave_python-0.3.0/tests/test_robustness.py +166 -0
  44. deriweave_python-0.3.0/tests/test_smoke.py +52 -0
  45. deriweave_python-0.3.0/tools/build_local.py +44 -0
  46. deriweave_python-0.3.0/tools/check_distribution.py +129 -0
  47. deriweave_python-0.3.0/tools/memory_check.py +53 -0
  48. deriweave_python-0.3.0/vendor/deriweave/AGENTS.md +59 -0
  49. deriweave_python-0.3.0/vendor/deriweave/CMakeLists.txt +392 -0
  50. deriweave_python-0.3.0/vendor/deriweave/LICENSE +21 -0
  51. deriweave_python-0.3.0/vendor/deriweave/README.md +146 -0
  52. deriweave_python-0.3.0/vendor/deriweave/cmake/DeriWeaveConfig.cmake.in +12 -0
  53. deriweave_python-0.3.0/vendor/deriweave/examples/support/heston_reference.cpp +110 -0
  54. deriweave_python-0.3.0/vendor/deriweave/examples/support/heston_reference.hpp +22 -0
  55. deriweave_python-0.3.0/vendor/deriweave/examples/support/kou_reference.hpp +42 -0
  56. deriweave_python-0.3.0/vendor/deriweave/examples/support/merton_fixed_jump_reference.hpp +46 -0
  57. deriweave_python-0.3.0/vendor/deriweave/examples/support/merton_reference.hpp +42 -0
  58. deriweave_python-0.3.0/vendor/deriweave/examples/support/nig_reference.hpp +39 -0
  59. deriweave_python-0.3.0/vendor/deriweave/examples/support/quantlib-reference-requirements.txt +2 -0
  60. deriweave_python-0.3.0/vendor/deriweave/examples/support/variance_gamma_reference.hpp +40 -0
  61. deriweave_python-0.3.0/vendor/deriweave/include/cashflow/cashflow.hpp +16 -0
  62. deriweave_python-0.3.0/vendor/deriweave/include/deriweave.hpp +67 -0
  63. deriweave_python-0.3.0/vendor/deriweave/include/market/market_data.hpp +46 -0
  64. deriweave_python-0.3.0/vendor/deriweave/include/market/market_path.hpp +63 -0
  65. deriweave_python-0.3.0/vendor/deriweave/include/market/underlying.hpp +19 -0
  66. deriweave_python-0.3.0/vendor/deriweave/include/model/black_scholes_model.hpp +53 -0
  67. deriweave_python-0.3.0/vendor/deriweave/include/model/heston_model.hpp +57 -0
  68. deriweave_python-0.3.0/vendor/deriweave/include/model/kou_model.hpp +59 -0
  69. deriweave_python-0.3.0/vendor/deriweave/include/model/merton_model.hpp +59 -0
  70. deriweave_python-0.3.0/vendor/deriweave/include/model/model.hpp +31 -0
  71. deriweave_python-0.3.0/vendor/deriweave/include/model/nig_model.hpp +59 -0
  72. deriweave_python-0.3.0/vendor/deriweave/include/model/variance_gamma_model.hpp +59 -0
  73. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/antithetic_random_source.hpp +42 -0
  74. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/bivariate_statistics.hpp +42 -0
  75. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/block_seed.hpp +14 -0
  76. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/control_variate.hpp +37 -0
  77. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/erlang_transform.hpp +15 -0
  78. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/gamma_transform.hpp +21 -0
  79. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/inverse_gaussian_transform.hpp +17 -0
  80. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/poisson_transform.hpp +22 -0
  81. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/pseudo_random_source.hpp +26 -0
  82. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/random_source.hpp +26 -0
  83. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/simulation_config.hpp +55 -0
  84. deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/statistics.hpp +42 -0
  85. deriweave_python-0.3.0/vendor/deriweave/include/pricing/black_scholes_spot_control.hpp +28 -0
  86. deriweave_python-0.3.0/vendor/deriweave/include/pricing/kou_spot_control.hpp +29 -0
  87. deriweave_python-0.3.0/vendor/deriweave/include/pricing/longstaff_schwartz.hpp +32 -0
  88. deriweave_python-0.3.0/vendor/deriweave/include/pricing/merton_spot_control.hpp +28 -0
  89. deriweave_python-0.3.0/vendor/deriweave/include/pricing/nig_spot_control.hpp +29 -0
  90. deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricer.hpp +41 -0
  91. deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_context.hpp +33 -0
  92. deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_control.hpp +28 -0
  93. deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_result.hpp +25 -0
  94. deriweave_python-0.3.0/vendor/deriweave/include/pricing/simulation_dates.hpp +31 -0
  95. deriweave_python-0.3.0/vendor/deriweave/include/pricing/variance_gamma_spot_control.hpp +29 -0
  96. deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/arithmetic_average.hpp +18 -0
  97. deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/geometric_average.hpp +18 -0
  98. deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/value_aggregation.hpp +17 -0
  99. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/average_value.hpp +24 -0
  100. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/basket.hpp +21 -0
  101. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/best_of.hpp +19 -0
  102. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/call.hpp +22 -0
  103. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/cashflow_rule.hpp +29 -0
  104. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/composed_product.hpp +27 -0
  105. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/conditional_value.hpp +21 -0
  106. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/constant_value.hpp +18 -0
  107. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/digital.hpp +28 -0
  108. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/put.hpp +22 -0
  109. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/scaled_value.hpp +20 -0
  110. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/terminal_value.hpp +19 -0
  111. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/value_expression.hpp +42 -0
  112. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/variance_value.hpp +17 -0
  113. deriweave_python-0.3.0/vendor/deriweave/include/product/composition/worst_of.hpp +19 -0
  114. deriweave_python-0.3.0/vendor/deriweave/include/product/features/discrete_barrier.hpp +62 -0
  115. deriweave_python-0.3.0/vendor/deriweave/include/product/features/product_feature.hpp +31 -0
  116. deriweave_python-0.3.0/vendor/deriweave/include/product/product.hpp +39 -0
  117. deriweave_python-0.3.0/vendor/deriweave/include/product/structured/autocall_product.hpp +76 -0
  118. deriweave_python-0.3.0/vendor/deriweave/include/product/structured/exercise_contract.hpp +71 -0
  119. deriweave_python-0.3.0/vendor/deriweave/include/product/structured/exercise_policy_product.hpp +68 -0
  120. deriweave_python-0.3.0/vendor/deriweave/src/cashflow/cashflow.cpp +21 -0
  121. deriweave_python-0.3.0/vendor/deriweave/src/market/market_data.cpp +117 -0
  122. deriweave_python-0.3.0/vendor/deriweave/src/market/market_path.cpp +154 -0
  123. deriweave_python-0.3.0/vendor/deriweave/src/market/underlying.cpp +18 -0
  124. deriweave_python-0.3.0/vendor/deriweave/src/model/black_scholes_model.cpp +211 -0
  125. deriweave_python-0.3.0/vendor/deriweave/src/model/heston_model.cpp +260 -0
  126. deriweave_python-0.3.0/vendor/deriweave/src/model/kou_model.cpp +170 -0
  127. deriweave_python-0.3.0/vendor/deriweave/src/model/merton_model.cpp +158 -0
  128. deriweave_python-0.3.0/vendor/deriweave/src/model/nig_model.cpp +182 -0
  129. deriweave_python-0.3.0/vendor/deriweave/src/model/variance_gamma_model.cpp +179 -0
  130. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/antithetic_random_source.cpp +78 -0
  131. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/bivariate_statistics.cpp +129 -0
  132. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/block_seed.cpp +17 -0
  133. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/control_variate.cpp +106 -0
  134. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/erlang_transform.cpp +127 -0
  135. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/gamma_transform.cpp +180 -0
  136. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/inverse_gaussian_transform.cpp +62 -0
  137. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/poisson_transform.cpp +100 -0
  138. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/pseudo_random_source.cpp +31 -0
  139. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/random_source.cpp +62 -0
  140. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/simulation_config.cpp +55 -0
  141. deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/statistics.cpp +123 -0
  142. deriweave_python-0.3.0/vendor/deriweave/src/pricing/black_scholes_spot_control.cpp +85 -0
  143. deriweave_python-0.3.0/vendor/deriweave/src/pricing/kou_spot_control.cpp +89 -0
  144. deriweave_python-0.3.0/vendor/deriweave/src/pricing/longstaff_schwartz.cpp +273 -0
  145. deriweave_python-0.3.0/vendor/deriweave/src/pricing/merton_spot_control.cpp +87 -0
  146. deriweave_python-0.3.0/vendor/deriweave/src/pricing/nig_spot_control.cpp +89 -0
  147. deriweave_python-0.3.0/vendor/deriweave/src/pricing/pricer.cpp +276 -0
  148. deriweave_python-0.3.0/vendor/deriweave/src/pricing/pricing_context.cpp +27 -0
  149. deriweave_python-0.3.0/vendor/deriweave/src/pricing/simulation_dates.cpp +88 -0
  150. deriweave_python-0.3.0/vendor/deriweave/src/pricing/variance_gamma_spot_control.cpp +89 -0
  151. deriweave_python-0.3.0/vendor/deriweave/src/product/aggregation/arithmetic_average.cpp +30 -0
  152. deriweave_python-0.3.0/vendor/deriweave/src/product/aggregation/geometric_average.cpp +32 -0
  153. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/average_value.cpp +42 -0
  154. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/basket.cpp +38 -0
  155. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/best_of.cpp +25 -0
  156. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/call.cpp +28 -0
  157. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/cashflow_rule.cpp +31 -0
  158. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/composed_product.cpp +63 -0
  159. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/conditional_value.cpp +21 -0
  160. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/constant_value.cpp +16 -0
  161. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/digital.cpp +59 -0
  162. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/numeric.hpp +33 -0
  163. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/put.cpp +28 -0
  164. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/scaled_value.cpp +27 -0
  165. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/terminal_value.cpp +16 -0
  166. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/value_expression.cpp +67 -0
  167. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/variance_value.cpp +16 -0
  168. deriweave_python-0.3.0/vendor/deriweave/src/product/composition/worst_of.cpp +25 -0
  169. deriweave_python-0.3.0/vendor/deriweave/src/product/features/discrete_barrier.cpp +135 -0
  170. deriweave_python-0.3.0/vendor/deriweave/src/product/features/product_feature.cpp +27 -0
  171. deriweave_python-0.3.0/vendor/deriweave/src/product/product.cpp +19 -0
  172. deriweave_python-0.3.0/vendor/deriweave/src/product/structured/autocall_product.cpp +156 -0
  173. deriweave_python-0.3.0/vendor/deriweave/src/product/structured/exercise_contract.cpp +103 -0
  174. deriweave_python-0.3.0/vendor/deriweave/src/product/structured/exercise_policy_product.cpp +105 -0
  175. deriweave_python-0.3.0/vendor/deriweave/tests/antithetic_random_source_tests.cpp +197 -0
  176. deriweave_python-0.3.0/vendor/deriweave/tests/asian_composition_tests.cpp +176 -0
  177. deriweave_python-0.3.0/vendor/deriweave/tests/autocall_product_tests.cpp +320 -0
  178. deriweave_python-0.3.0/vendor/deriweave/tests/average_aggregation_tests.cpp +150 -0
  179. deriweave_python-0.3.0/vendor/deriweave/tests/basket_composition_tests.cpp +187 -0
  180. deriweave_python-0.3.0/vendor/deriweave/tests/bivariate_statistics_tests.cpp +196 -0
  181. deriweave_python-0.3.0/vendor/deriweave/tests/black_scholes_model_tests.cpp +265 -0
  182. deriweave_python-0.3.0/vendor/deriweave/tests/black_scholes_spot_control_tests.cpp +196 -0
  183. deriweave_python-0.3.0/vendor/deriweave/tests/blocked_pricer_tests.cpp +228 -0
  184. deriweave_python-0.3.0/vendor/deriweave/tests/composed_product_tests.cpp +518 -0
  185. deriweave_python-0.3.0/vendor/deriweave/tests/conditional_value_tests.cpp +91 -0
  186. deriweave_python-0.3.0/vendor/deriweave/tests/consumer/CMakeLists.txt +42 -0
  187. deriweave_python-0.3.0/vendor/deriweave/tests/consumer/main.cpp +173 -0
  188. deriweave_python-0.3.0/vendor/deriweave/tests/consumer/shared.cpp +12 -0
  189. deriweave_python-0.3.0/vendor/deriweave/tests/control_variate_tests.cpp +216 -0
  190. deriweave_python-0.3.0/vendor/deriweave/tests/coupon_memory_tests.cpp +252 -0
  191. deriweave_python-0.3.0/vendor/deriweave/tests/digital_expression_tests.cpp +243 -0
  192. deriweave_python-0.3.0/vendor/deriweave/tests/discrete_barrier_tests.cpp +353 -0
  193. deriweave_python-0.3.0/vendor/deriweave/tests/early_exercise_tests.cpp +371 -0
  194. deriweave_python-0.3.0/vendor/deriweave/tests/erlang_transform_tests.cpp +83 -0
  195. deriweave_python-0.3.0/vendor/deriweave/tests/expression_barrier_tests.cpp +251 -0
  196. deriweave_python-0.3.0/vendor/deriweave/tests/extrema_expression_tests.cpp +276 -0
  197. deriweave_python-0.3.0/vendor/deriweave/tests/gamma_transform_tests.cpp +101 -0
  198. deriweave_python-0.3.0/vendor/deriweave/tests/heston_model_tests.cpp +393 -0
  199. deriweave_python-0.3.0/vendor/deriweave/tests/heston_reference_tests.cpp +71 -0
  200. deriweave_python-0.3.0/vendor/deriweave/tests/inverse_gaussian_transform_tests.cpp +94 -0
  201. deriweave_python-0.3.0/vendor/deriweave/tests/kou_model_tests.cpp +203 -0
  202. deriweave_python-0.3.0/vendor/deriweave/tests/kou_pricing_tests.cpp +204 -0
  203. deriweave_python-0.3.0/vendor/deriweave/tests/lookback_composition_tests.cpp +186 -0
  204. deriweave_python-0.3.0/vendor/deriweave/tests/market_data_tests.cpp +193 -0
  205. deriweave_python-0.3.0/vendor/deriweave/tests/market_path_tests.cpp +111 -0
  206. deriweave_python-0.3.0/vendor/deriweave/tests/merton_early_exercise_tests.cpp +132 -0
  207. deriweave_python-0.3.0/vendor/deriweave/tests/merton_model_tests.cpp +227 -0
  208. deriweave_python-0.3.0/vendor/deriweave/tests/merton_multi_asset_tests.cpp +136 -0
  209. deriweave_python-0.3.0/vendor/deriweave/tests/merton_product_integration_tests.cpp +190 -0
  210. deriweave_python-0.3.0/vendor/deriweave/tests/merton_spot_control_tests.cpp +94 -0
  211. deriweave_python-0.3.0/vendor/deriweave/tests/multivariate_lsm_tests.cpp +213 -0
  212. deriweave_python-0.3.0/vendor/deriweave/tests/nig_model_tests.cpp +179 -0
  213. deriweave_python-0.3.0/vendor/deriweave/tests/nig_pricing_tests.cpp +377 -0
  214. deriweave_python-0.3.0/vendor/deriweave/tests/openmp_pricer_tests.cpp +309 -0
  215. deriweave_python-0.3.0/vendor/deriweave/tests/poisson_transform_tests.cpp +103 -0
  216. deriweave_python-0.3.0/vendor/deriweave/tests/pricer_tests.cpp +326 -0
  217. deriweave_python-0.3.0/vendor/deriweave/tests/pricing_context_tests.cpp +122 -0
  218. deriweave_python-0.3.0/vendor/deriweave/tests/pseudo_random_source_tests.cpp +97 -0
  219. deriweave_python-0.3.0/vendor/deriweave/tests/put_expression_tests.cpp +214 -0
  220. deriweave_python-0.3.0/vendor/deriweave/tests/random_source_tests.cpp +143 -0
  221. deriweave_python-0.3.0/vendor/deriweave/tests/simulation_config_tests.cpp +125 -0
  222. deriweave_python-0.3.0/vendor/deriweave/tests/simulation_dates_tests.cpp +183 -0
  223. deriweave_python-0.3.0/vendor/deriweave/tests/statistics_tests.cpp +223 -0
  224. deriweave_python-0.3.0/vendor/deriweave/tests/support/composed_contracts.hpp +68 -0
  225. deriweave_python-0.3.0/vendor/deriweave/tests/support/reference_product.hpp +83 -0
  226. deriweave_python-0.3.0/vendor/deriweave/tests/variance_gamma_model_tests.cpp +314 -0
  227. deriweave_python-0.3.0/vendor/deriweave/tests/variance_gamma_pricing_tests.cpp +370 -0
  228. deriweave_python-0.3.0/vendor/eigen-source/COPYING.APACHE +203 -0
  229. deriweave_python-0.3.0/vendor/eigen-source/COPYING.BSD +26 -0
  230. deriweave_python-0.3.0/vendor/eigen-source/COPYING.GPL +674 -0
  231. deriweave_python-0.3.0/vendor/eigen-source/COPYING.LGPL +502 -0
  232. deriweave_python-0.3.0/vendor/eigen-source/COPYING.MINPACK +51 -0
  233. deriweave_python-0.3.0/vendor/eigen-source/COPYING.MPL2 +373 -0
  234. deriweave_python-0.3.0/vendor/eigen-source/COPYING.README +18 -0
  235. deriweave_python-0.3.0/vendor/eigen-source/Eigen/.gitignore +4 -0
  236. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Cholesky +45 -0
  237. deriweave_python-0.3.0/vendor/eigen-source/Eigen/CholmodSupport +48 -0
  238. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Core +384 -0
  239. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Dense +7 -0
  240. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Eigen +2 -0
  241. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Eigenvalues +60 -0
  242. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Geometry +59 -0
  243. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Householder +29 -0
  244. deriweave_python-0.3.0/vendor/eigen-source/Eigen/IterativeLinearSolvers +48 -0
  245. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Jacobi +32 -0
  246. deriweave_python-0.3.0/vendor/eigen-source/Eigen/KLUSupport +41 -0
  247. deriweave_python-0.3.0/vendor/eigen-source/Eigen/LU +47 -0
  248. deriweave_python-0.3.0/vendor/eigen-source/Eigen/MetisSupport +35 -0
  249. deriweave_python-0.3.0/vendor/eigen-source/Eigen/OrderingMethods +70 -0
  250. deriweave_python-0.3.0/vendor/eigen-source/Eigen/PaStiXSupport +49 -0
  251. deriweave_python-0.3.0/vendor/eigen-source/Eigen/PardisoSupport +35 -0
  252. deriweave_python-0.3.0/vendor/eigen-source/Eigen/QR +50 -0
  253. deriweave_python-0.3.0/vendor/eigen-source/Eigen/QtAlignedMalloc +39 -0
  254. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SPQRSupport +34 -0
  255. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SVD +50 -0
  256. deriweave_python-0.3.0/vendor/eigen-source/Eigen/Sparse +34 -0
  257. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseCholesky +37 -0
  258. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseCore +69 -0
  259. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseLU +50 -0
  260. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseQR +36 -0
  261. deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdDeque +27 -0
  262. deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdList +26 -0
  263. deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdVector +27 -0
  264. deriweave_python-0.3.0/vendor/eigen-source/Eigen/SuperLUSupport +64 -0
  265. deriweave_python-0.3.0/vendor/eigen-source/Eigen/UmfPackSupport +40 -0
  266. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LDLT.h +688 -0
  267. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LLT.h +558 -0
  268. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  269. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  270. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArithmeticSequence.h +413 -0
  271. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Array.h +417 -0
  272. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArrayBase.h +226 -0
  273. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArrayWrapper.h +209 -0
  274. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Assign.h +90 -0
  275. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/AssignEvaluator.h +1010 -0
  276. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Assign_MKL.h +178 -0
  277. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/BandMatrix.h +353 -0
  278. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Block.h +448 -0
  279. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/BooleanRedux.h +162 -0
  280. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CommaInitializer.h +164 -0
  281. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ConditionEstimator.h +175 -0
  282. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CoreEvaluators.h +1741 -0
  283. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CoreIterators.h +132 -0
  284. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  285. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  286. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  287. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  288. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseUnaryView.h +132 -0
  289. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseBase.h +701 -0
  290. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  291. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseStorage.h +652 -0
  292. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Diagonal.h +258 -0
  293. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DiagonalMatrix.h +391 -0
  294. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DiagonalProduct.h +28 -0
  295. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Dot.h +318 -0
  296. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/EigenBase.h +160 -0
  297. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  298. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Fuzzy.h +155 -0
  299. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GeneralProduct.h +465 -0
  300. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GenericPacketMath.h +1040 -0
  301. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GlobalFunctions.h +194 -0
  302. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/IO.h +258 -0
  303. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/IndexedView.h +237 -0
  304. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Inverse.h +117 -0
  305. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Map.h +171 -0
  306. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MapBase.h +310 -0
  307. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MathFunctions.h +2057 -0
  308. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  309. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Matrix.h +565 -0
  310. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MatrixBase.h +547 -0
  311. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NestByValue.h +85 -0
  312. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NoAlias.h +109 -0
  313. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NumTraits.h +335 -0
  314. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  315. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PermutationMatrix.h +605 -0
  316. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PlainObjectBase.h +1128 -0
  317. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Product.h +191 -0
  318. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ProductEvaluators.h +1179 -0
  319. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Random.h +218 -0
  320. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Redux.h +515 -0
  321. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Ref.h +381 -0
  322. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Replicate.h +142 -0
  323. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Reshaped.h +454 -0
  324. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ReturnByValue.h +119 -0
  325. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Reverse.h +217 -0
  326. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Select.h +164 -0
  327. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SelfAdjointView.h +365 -0
  328. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  329. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Solve.h +188 -0
  330. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SolveTriangular.h +235 -0
  331. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SolverBase.h +168 -0
  332. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/StableNorm.h +251 -0
  333. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/StlIterators.h +463 -0
  334. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Stride.h +116 -0
  335. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Swap.h +68 -0
  336. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Transpose.h +464 -0
  337. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Transpositions.h +386 -0
  338. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/TriangularMatrix.h +1001 -0
  339. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/VectorBlock.h +96 -0
  340. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/VectorwiseOp.h +784 -0
  341. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Visitor.h +381 -0
  342. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  343. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  344. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  345. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  346. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  347. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  348. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  349. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  350. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  351. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  352. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  353. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  354. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  355. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  356. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  357. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  358. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  359. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  360. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  361. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/Half.h +942 -0
  362. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/Settings.h +49 -0
  363. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  364. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  365. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  366. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  367. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  368. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  369. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  370. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  371. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  372. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  373. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  374. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  375. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  376. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  377. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  378. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  379. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  380. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  381. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  382. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  383. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  384. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  385. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  386. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  387. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  388. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  389. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  390. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  391. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  392. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  393. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  394. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/StlFunctors.h +166 -0
  395. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  396. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  397. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  398. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  399. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  400. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  401. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  402. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  403. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  404. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/Parallelizer.h +180 -0
  405. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  406. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  407. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  408. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  409. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  410. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  411. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  412. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  413. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  414. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  415. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  416. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  417. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  418. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/BlasUtil.h +583 -0
  419. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  420. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Constants.h +563 -0
  421. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  422. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  423. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  424. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/IntegralConstant.h +272 -0
  425. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/MKL_support.h +137 -0
  426. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Macros.h +1464 -0
  427. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Memory.h +1163 -0
  428. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Meta.h +812 -0
  429. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/NonMPL2.h +3 -0
  430. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  431. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  432. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/StaticAssert.h +221 -0
  433. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  434. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/XprHelper.h +856 -0
  435. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  436. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  437. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  438. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  439. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  440. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  441. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  442. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  443. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  444. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  445. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  446. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  447. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  448. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  449. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/AlignedBox.h +486 -0
  450. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/AngleAxis.h +247 -0
  451. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/EulerAngles.h +114 -0
  452. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Homogeneous.h +501 -0
  453. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Hyperplane.h +282 -0
  454. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/OrthoMethods.h +235 -0
  455. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  456. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Quaternion.h +870 -0
  457. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Rotation2D.h +199 -0
  458. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/RotationBase.h +206 -0
  459. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Scaling.h +188 -0
  460. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Transform.h +1563 -0
  461. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Translation.h +202 -0
  462. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Umeyama.h +166 -0
  463. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  464. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/BlockHouseholder.h +110 -0
  465. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/Householder.h +176 -0
  466. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/HouseholderSequence.h +545 -0
  467. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  468. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  469. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  470. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  471. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  472. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  473. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  474. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  475. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Jacobi/Jacobi.h +483 -0
  476. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  477. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/Determinant.h +117 -0
  478. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/FullPivLU.h +877 -0
  479. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/InverseImpl.h +432 -0
  480. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/PartialPivLU.h +624 -0
  481. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  482. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/arch/InverseSize4.h +351 -0
  483. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  484. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Amd.h +435 -0
  485. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  486. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Ordering.h +153 -0
  487. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  488. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  489. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  490. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  491. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  492. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  493. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/HouseholderQR.h +434 -0
  494. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  495. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  496. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/BDCSVD.h +1366 -0
  497. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/JacobiSVD.h +812 -0
  498. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  499. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/SVDBase.h +376 -0
  500. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  501. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  502. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  503. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/AmbiVector.h +378 -0
  504. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  505. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  506. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  507. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseAssign.h +270 -0
  508. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseBlock.h +571 -0
  509. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  510. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  511. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  512. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  513. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  514. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  515. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDot.h +98 -0
  516. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  517. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMap.h +305 -0
  518. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  519. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  520. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  521. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseProduct.h +181 -0
  522. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseRedux.h +49 -0
  523. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseRef.h +397 -0
  524. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  525. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  526. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  527. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  528. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  529. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseUtil.h +186 -0
  530. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseVector.h +478 -0
  531. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseView.h +254 -0
  532. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  533. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU.h +923 -0
  534. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  535. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  536. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  537. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  538. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  539. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  540. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  541. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  542. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  543. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  544. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  545. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  546. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  547. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  548. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  549. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  550. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseQR/SparseQR.h +758 -0
  551. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdDeque.h +116 -0
  552. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdList.h +106 -0
  553. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdVector.h +131 -0
  554. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/details.h +84 -0
  555. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  556. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  557. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/Image.h +82 -0
  558. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/Kernel.h +79 -0
  559. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/RealSvd2x2.h +55 -0
  560. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/blas.h +440 -0
  561. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapack.h +152 -0
  562. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapacke.h +16292 -0
  563. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapacke_mangling.h +17 -0
  564. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  565. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  566. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/BlockMethods.h +1442 -0
  567. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  568. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  569. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  570. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  571. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  572. deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ReshapedMethods.h +149 -0
@@ -0,0 +1,6 @@
1
+ # Native patch checksums must survive Windows checkouts.
2
+ * text=auto eol=lf
3
+ *.bat text eol=crlf
4
+ *.png binary
5
+ *.jpg binary
6
+ *.pdf binary
@@ -0,0 +1,42 @@
1
+ name: Build and test
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ validate:
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, windows-latest]
17
+ python: ["3.10", "3.12", "3.14"]
18
+ openmp: ["OFF"]
19
+ include:
20
+ - os: ubuntu-latest
21
+ python: "3.12"
22
+ openmp: "ON"
23
+ - os: windows-latest
24
+ python: "3.12"
25
+ openmp: "ON"
26
+ runs-on: ${{ matrix.os }}
27
+ timeout-minutes: 30
28
+ env:
29
+ CMAKE_BUILD_PARALLEL_LEVEL: "4"
30
+ steps:
31
+ - uses: actions/checkout@v6
32
+ - uses: actions/setup-python@v6
33
+ with:
34
+ python-version: ${{ matrix.python }}
35
+ - name: Install development dependencies
36
+ run: python -m pip install "scikit-build-core>=1.0" "pybind11>=3.0,<4" "pytest>=8" "numpy>=1.23" "build>=1.2" "twine>=6"
37
+ - name: Build and install the native extension; run C++ suites
38
+ run: python tools/build_local.py --openmp ${{ matrix.openmp }} --tests
39
+ - name: Build distributions and test the wheel in a fresh environment
40
+ run: python tools/check_distribution.py --tests
41
+ - name: Check release metadata
42
+ run: python -c "import glob, subprocess, sys; subprocess.run([sys.executable, '-m', 'twine', 'check', '--strict', *glob.glob('dist/*.whl'), *glob.glob('dist/*.tar.gz')], check=True)"
@@ -0,0 +1,18 @@
1
+ /.venv/
2
+ /build/
3
+ /_skbuild/
4
+ *.egg-info/
5
+ __pycache__/
6
+ .pytest_cache/
7
+ /.audit/
8
+ /dist/
9
+ *.pyd
10
+ *.so
11
+
12
+ # Keep the pinned engine and Eigen headers in source control for pip install .
13
+ /vendor/*
14
+ !/vendor/deriweave/
15
+ !/vendor/eigen-source/
16
+ /vendor/eigen-source/*
17
+ !/vendor/eigen-source/Eigen/
18
+ !/vendor/eigen-source/COPYING*
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.3.0 — 2026-11-07
4
+
5
+ - Six native models and reusable expressions, with autocalls and separate LSM training/evaluation.
6
+ - Native paths, deterministic contract evaluation, moment diagnostics, NumPy interoperability and type information.
7
+ - Numerical portability fixes validated on Windows/MSVC and Linux/GCC; details in docs/AUDIT.md.
8
+ - Self-contained sources with an explicit archive whitelist and sequential Windows CPython 3.12 wheel; native dependencies are retained in source control.
9
+ - Source preparation reuses existing headers without compiling Eigen and patches new engine sources before installing them.
10
+ - Development builds install the actual extension they validate; clean-environment distribution checks are reproducible.
11
+
12
+ ## 0.2.0
13
+
14
+ Initial Python bindings with six models, declarative compositions and historical pricing helpers.
@@ -0,0 +1,60 @@
1
+ cmake_minimum_required(VERSION 3.20)
2
+ project(DeriWeavePython VERSION 0.3.0 LANGUAGES CXX)
3
+
4
+ option(DERIWEAVE_PY_BUILD_TESTS "Build native tests and the Python reference executable" OFF)
5
+ option(DERIWEAVE_ENABLE_OPENMP "Enable native OpenMP pricing (runtime required)" OFF)
6
+ if(NOT DEFINED DERIWEAVE_SOURCE_DIR)
7
+ if(DEFINED ENV{DERIWEAVE_CPP_DIR} AND NOT "$ENV{DERIWEAVE_CPP_DIR}" STREQUAL "")
8
+ set(DERIWEAVE_SOURCE_DIR "$ENV{DERIWEAVE_CPP_DIR}" CACHE PATH "DeriWeave C++ sources")
9
+ else()
10
+ set(DERIWEAVE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/deriweave" CACHE PATH "DeriWeave C++ sources")
11
+ endif()
12
+ endif()
13
+ if(NOT EXISTS "${DERIWEAVE_SOURCE_DIR}/CMakeLists.txt")
14
+ message(FATAL_ERROR "DeriWeave C++ sources missing. Run python prepare_windows.py or set DERIWEAVE_SOURCE_DIR.")
15
+ endif()
16
+ find_package(Eigen3 3.4 QUIET NO_MODULE)
17
+ if(NOT Eigen3_FOUND)
18
+ set(DERIWEAVE_EIGEN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/eigen-source")
19
+ if(NOT EXISTS "${DERIWEAVE_EIGEN_INCLUDE_DIR}/Eigen/Core")
20
+ message(FATAL_ERROR "Eigen 3.4+ missing. Install Eigen or run python prepare_windows.py.")
21
+ endif()
22
+ include(CMakePackageConfigHelpers)
23
+ set(Eigen3_DIR "${CMAKE_CURRENT_BINARY_DIR}/eigen-package")
24
+ file(MAKE_DIRECTORY "${Eigen3_DIR}")
25
+ configure_file(cmake/Eigen3Config.cmake.in "${Eigen3_DIR}/Eigen3Config.cmake" @ONLY)
26
+ write_basic_package_version_file("${Eigen3_DIR}/Eigen3ConfigVersion.cmake"
27
+ VERSION 3.4.0 COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT)
28
+ find_package(Eigen3 3.4 REQUIRED NO_MODULE)
29
+ endif()
30
+ set(DERIWEAVE_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
31
+ set(DERIWEAVE_BUILD_TESTS ${DERIWEAVE_PY_BUILD_TESTS} CACHE BOOL "" FORCE)
32
+ if(DERIWEAVE_PY_BUILD_TESTS)
33
+ include(CTest)
34
+ endif()
35
+ find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
36
+ set(PYBIND11_FINDPYTHON ON)
37
+ find_package(pybind11 3.0 CONFIG REQUIRED)
38
+ add_subdirectory("${DERIWEAVE_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/deriweave_cpp" EXCLUDE_FROM_ALL)
39
+ pybind11_add_module(_core NO_EXTRAS bindings/module.cpp bindings/composition.cpp)
40
+ target_compile_features(_core PRIVATE cxx_std_20)
41
+ target_link_libraries(_core PRIVATE DeriWeave::deriweave_core)
42
+ install(TARGETS _core LIBRARY DESTINATION deriweave_py COMPONENT python RUNTIME DESTINATION deriweave_py COMPONENT python)
43
+ install(FILES "${DERIWEAVE_SOURCE_DIR}/LICENSE" DESTINATION deriweave_py/licenses
44
+ RENAME DeriWeave-LICENSE COMPONENT python)
45
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vendor/eigen-source/COPYING.MPL2")
46
+ install(FILES vendor/eigen-source/COPYING.MPL2 vendor/eigen-source/COPYING.BSD
47
+ vendor/eigen-source/COPYING.MINPACK vendor/eigen-source/COPYING.README
48
+ DESTINATION deriweave_py/licenses COMPONENT python)
49
+ endif()
50
+ if(DERIWEAVE_PY_BUILD_TESTS)
51
+ add_custom_target(native_tests)
52
+ get_property(_native_targets DIRECTORY "${DERIWEAVE_SOURCE_DIR}" PROPERTY BUILDSYSTEM_TARGETS)
53
+ foreach(_target IN LISTS _native_targets)
54
+ if(_target MATCHES "_tests$")
55
+ add_dependencies(native_tests "${_target}")
56
+ endif()
57
+ endforeach()
58
+ add_executable(native_reference tests/native_reference.cpp)
59
+ target_link_libraries(native_reference PRIVATE DeriWeave::deriweave_core)
60
+ endif()
@@ -0,0 +1,36 @@
1
+ @echo off
2
+ setlocal
3
+ cd /d "%~dp0"
4
+ where cl >nul 2>&1
5
+ if errorlevel 1 (
6
+ echo ERROR: Open an x64 Native Tools Command Prompt for Visual Studio.
7
+ exit /b 1
8
+ )
9
+ where cmake >nul 2>&1
10
+ if errorlevel 1 (
11
+ if exist "%ProgramFiles%\CMake\bin\cmake.exe" set "PATH=%ProgramFiles%\CMake\bin;%PATH%"
12
+ )
13
+ where cmake >nul 2>&1
14
+ if errorlevel 1 (
15
+ echo ERROR: CMake is required.
16
+ exit /b 1
17
+ )
18
+ if not exist ".venv\Scripts\python.exe" (
19
+ py -3 -m venv .venv
20
+ if errorlevel 1 exit /b 1
21
+ )
22
+ call ".venv\Scripts\activate.bat"
23
+ python prepare_windows.py
24
+ if errorlevel 1 exit /b 1
25
+ python -m pip install ".[test]"
26
+ if errorlevel 1 exit /b 1
27
+ python tools\build_local.py --tests
28
+ if errorlevel 1 exit /b 1
29
+ python -m pytest -q
30
+ if errorlevel 1 exit /b 1
31
+ for %%f in (examples\*.py) do (
32
+ python "%%f"
33
+ if errorlevel 1 exit /b 1
34
+ )
35
+ echo SUCCESS: installation, native tests, Python tests and examples passed.
36
+ endlocal
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DeriWeave contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,211 @@
1
+ Metadata-Version: 2.4
2
+ Name: deriweave-python
3
+ Version: 0.3.0
4
+ Summary: Composable derivatives pricing with the native DeriWeave C++20 engine
5
+ Keywords: derivatives,monte-carlo,quantitative-finance,pricing
6
+ Author: DeriWeave contributors
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Requires-Python: >=3.10
10
+ Provides-Extra: numpy
11
+ Requires-Dist: numpy>=1.23; extra == "numpy"
12
+ Provides-Extra: test
13
+ Requires-Dist: pytest>=8; extra == "test"
14
+ Requires-Dist: numpy>=1.23; extra == "test"
15
+ Requires-Dist: build>=1.2; extra == "test"
16
+ Requires-Dist: scikit-build-core>=1.0; extra == "test"
17
+ Requires-Dist: pybind11<4,>=3.0; extra == "test"
18
+ Provides-Extra: release
19
+ Requires-Dist: build>=1.2; extra == "release"
20
+ Requires-Dist: twine>=6; extra == "release"
21
+ Description-Content-Type: text/markdown
22
+
23
+ # DeriWeavePython 0.3.0
24
+
25
+ Contrats financiers composables en Python, avec **DeriWeave C++20** pour la
26
+ simulation, les cashflows, les statistiques et Longstaff-Schwartz.
27
+ Les descriptions Python sont réutilisables ; aucun callback Python ne s'exécute
28
+ dans les boucles Monte Carlo.
29
+
30
+ Six modèles, expressions imbriquées, barrières discrètes, autocalls avec mémoire
31
+ et politiques LSM sont disponibles. La documentation détaillée accompagne
32
+ l'archive source : `docs/guide.md`, `docs/coverage.md` et `docs/AUDIT.md`.
33
+
34
+ ## Installation avec pip
35
+
36
+ ~~~bash
37
+ python -m pip install deriweave-python
38
+ ~~~
39
+
40
+ La wheel prête à l'emploi cible **CPython 3.12, Windows x64**. Pour les autres
41
+ configurations, pip construit depuis les sources : un compilateur C++20 et
42
+ CMake sont alors nécessaires. La construction Linux/GCC est vérifiée sur Python 3.12.
43
+ NumPy est facultatif pour le pricing ; pour les matrices et diagnostics de chemin :
44
+
45
+ ~~~bash
46
+ python -m pip install "deriweave-python[numpy]"
47
+ ~~~
48
+
49
+ ## Installer la wheel Windows fournie
50
+
51
+ Pour **CPython 3.12, Windows x64**, la wheel de `dist/` s'installe sans
52
+ compilateur C++. Dans un environnement virtuel activé :
53
+
54
+ ~~~bat
55
+ python -m pip install dist\deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
56
+ python examples\demo.py
57
+ ~~~
58
+
59
+ Le nom du paquet est `deriweave-python`, l'import est `deriweave_py`.
60
+ La wheel et les sources permettent aussi une installation à partir d'un fichier
61
+ local. Les instructions de maintenance et de publication figurent dans
62
+ `docs/release.md`, inclus dans l'archive source.
63
+
64
+ ## Compiler et installer sous Windows
65
+
66
+ Prérequis : Python 64 bits 3.10+, MSVC C++20 et CMake 3.20+.
67
+ Validation sur Python 3.12.3, MSVC 19.51 et pybind11 3.1.0.
68
+ Ouvrir une **x64 Native Tools Command Prompt** de Visual Studio :
69
+
70
+ ~~~bat
71
+ python -m venv .venv
72
+ .venv\Scripts\activate
73
+ python -m pip install .
74
+ ~~~
75
+
76
+ Réutiliser le .venv existant sans le recréer si souhaité.
77
+ Le moteur et les en-têtes Eigen sont inclus dans les sources et conservés par
78
+ les règles Git du projet : un checkout complet suffit pour `pip install .`.
79
+ CMake n'a pas besoin du réseau ; pip peut télécharger le backend de construction.
80
+ Pour une copie privée de ses dépendances, `python prepare_windows.py` récupère
81
+ uniquement les sources manquantes, sur Windows ou Linux. Il réutilise les sources
82
+ existantes et ne compile pas Eigen. Les corrections vérifiées par empreintes sont
83
+ appliquées avant d'installer une nouvelle copie du moteur.
84
+
85
+ Avec NumPy et les tests :
86
+
87
+ ~~~bat
88
+ python -m pip install ".[test]"
89
+ python tools\build_local.py --tests
90
+ python -m pytest -q
91
+ ~~~
92
+
93
+ `tools/build_local.py` installe le binaire qu'il construit avant de lancer les
94
+ tests natifs ; les appels Python suivants utilisent donc cette compilation.
95
+ INSTALL_WINDOWS.bat automatise préparation, installation, tests et exemples.
96
+
97
+ ## Installation Linux
98
+
99
+ Avec Python, venv, les en-têtes de développement Python, un compilateur C++20 et
100
+ CMake installés :
101
+
102
+ ~~~bash
103
+ python3 -m venv .venv
104
+ . .venv/bin/activate
105
+ python -m pip install .
106
+ ~~~
107
+
108
+ Un Eigen 3.4+ installé est prioritaire ; les en-têtes inclus servent de repli.
109
+ La validation Linux/GCC et ses limites figurent dans le rapport d'audit.
110
+
111
+ ## Premier prix
112
+
113
+ ~~~python
114
+ import deriweave_py as dw
115
+
116
+ asset = dw.Asset("AAPL")
117
+ product = dw.Product(dw.Call(dw.Spot(asset, 1.0), 100), payment_date=1.05)
118
+ market = dw.Market({"AAPL": 100}, rate=0.03, dividend_yields={"AAPL": 0.02})
119
+ model = dw.BlackScholes(0.20)
120
+ settings = dw.SimulationSettings(n_simulations=20_000, seed=42, antithetic=True)
121
+ result = dw.price(product, market=market, model=model, settings=settings)
122
+ print(result.price, result.standard_error, result.confidence_interval_95)
123
+ ~~~
124
+
125
+ L'observation à 1.0 et le paiement à 1.05 restent distincts.
126
+ 20 000 observations antithétiques produisent 40 000 trajectoires.
127
+
128
+ ## Produits composables
129
+
130
+ ~~~python
131
+ import deriweave_py as dw
132
+
133
+ observations = [
134
+ dw.Basket([dw.Spot("A", t), dw.Spot("B", t)], [0.5, 0.5])
135
+ for t in [0.25, 0.5, 0.75, 1.0]
136
+ ]
137
+ product = dw.Product(dw.Call(dw.Average(observations), 105), payment_date=1.0)
138
+ result = dw.price(product, market=dw.Market({"A": 100, "B": 110}, 0.03),
139
+ model=dw.BlackScholes([0.20, 0.25], [[1, 0.4], [0.4, 1]]))
140
+ print(result.price)
141
+ ~~~
142
+
143
+ Un call sur panier diffère d'un panier de calls. Les moyennes imbriquées
144
+ conservent leur ordre et leurs observations répétées.
145
+
146
+ ## Exercice anticipé
147
+
148
+ ~~~python
149
+ import deriweave_py as dw
150
+
151
+ t = dw.ExerciseTime
152
+ contract = dw.American(
153
+ payoff=dw.Put(dw.Spot("A", t), 100),
154
+ states=[dw.Spot("A", t)], start=0, maturity=1,
155
+ )
156
+ market = dw.Market({"A": 100}, 0.03)
157
+ model = dw.BlackScholes(0.20)
158
+ policy = dw.train_longstaff_schwartz(
159
+ contract, market=market, model=model,
160
+ settings=dw.LsmSettings(training_paths=4000, seed=7919,
161
+ max_exercise_time_step=1/12),
162
+ )
163
+ result = dw.price(policy, market=market, model=model,
164
+ settings=dw.SimulationSettings(n_simulations=6000, seed=42))
165
+ print(result.price, policy.exercise_dates)
166
+ ~~~
167
+
168
+ L'entraînement reste séparé de l'évaluation. Sous Heston, utiliser au minimum
169
+ spot et variance comme états pour une vanille. L'intervalle de confiance est
170
+ conditionnel à la politique apprise.
171
+
172
+ ## Vérifier une distribution
173
+
174
+ Après installation de `.[test,release]` et construction de la référence C++ avec
175
+ `python tools/build_local.py --tests` :
176
+
177
+ ~~~bash
178
+ python tools/check_distribution.py --tests
179
+ ~~~
180
+
181
+ Cette commande construit la wheel depuis l'archive source, contrôle ses contenus
182
+ et installe la wheel dans un venv neuf. Elle vérifie d'abord le pricing sans
183
+ NumPy, puis exécute tous les tests Python et les cinq exemples.
184
+ `--no-isolation` réutilise les dépendances de construction déjà installées.
185
+
186
+ ## Exemples et OpenMP
187
+
188
+ ~~~bash
189
+ python examples/demo.py
190
+ python examples/composition_demo.py
191
+ python examples/models_demo.py
192
+ python examples/structured_demo.py
193
+ python examples/exercise_demo.py
194
+ python tools/memory_check.py
195
+ ~~~
196
+
197
+ OpenMP est désactivé par défaut. Pour l'activer :
198
+
199
+ ~~~bash
200
+ python -m pip install . -Ccmake.define.DERIWEAVE_ENABLE_OPENMP=ON
201
+ ~~~
202
+
203
+ Utiliser ensuite SimulationSettings(use_openmp=True, num_threads=4).
204
+ dw.build_info() indique les capacités réelles du binaire.
205
+ Le runtime du compilateur est requis : vcomp140.dll sous MSVC, libgomp avec GCC.
206
+ La wheel séquentielle évite cette dépendance.
207
+
208
+ Les fonctions historiques european, asian et basket restent disponibles.
209
+ Base : [DeriWeave 0.1.0](https://github.com/AmineFendi94/DeriWeave),
210
+ commit 8e54378b0800c936e22c2abca0afaca751c73888, avec les corrections de portabilité
211
+ documentées dans l'audit. Licence MIT ; Eigen conserve ses licences.
@@ -0,0 +1,189 @@
1
+ # DeriWeavePython 0.3.0
2
+
3
+ Contrats financiers composables en Python, avec **DeriWeave C++20** pour la
4
+ simulation, les cashflows, les statistiques et Longstaff-Schwartz.
5
+ Les descriptions Python sont réutilisables ; aucun callback Python ne s'exécute
6
+ dans les boucles Monte Carlo.
7
+
8
+ Six modèles, expressions imbriquées, barrières discrètes, autocalls avec mémoire
9
+ et politiques LSM sont disponibles. La documentation détaillée accompagne
10
+ l'archive source : `docs/guide.md`, `docs/coverage.md` et `docs/AUDIT.md`.
11
+
12
+ ## Installation avec pip
13
+
14
+ ~~~bash
15
+ python -m pip install deriweave-python
16
+ ~~~
17
+
18
+ La wheel prête à l'emploi cible **CPython 3.12, Windows x64**. Pour les autres
19
+ configurations, pip construit depuis les sources : un compilateur C++20 et
20
+ CMake sont alors nécessaires. La construction Linux/GCC est vérifiée sur Python 3.12.
21
+ NumPy est facultatif pour le pricing ; pour les matrices et diagnostics de chemin :
22
+
23
+ ~~~bash
24
+ python -m pip install "deriweave-python[numpy]"
25
+ ~~~
26
+
27
+ ## Installer la wheel Windows fournie
28
+
29
+ Pour **CPython 3.12, Windows x64**, la wheel de `dist/` s'installe sans
30
+ compilateur C++. Dans un environnement virtuel activé :
31
+
32
+ ~~~bat
33
+ python -m pip install dist\deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
34
+ python examples\demo.py
35
+ ~~~
36
+
37
+ Le nom du paquet est `deriweave-python`, l'import est `deriweave_py`.
38
+ La wheel et les sources permettent aussi une installation à partir d'un fichier
39
+ local. Les instructions de maintenance et de publication figurent dans
40
+ `docs/release.md`, inclus dans l'archive source.
41
+
42
+ ## Compiler et installer sous Windows
43
+
44
+ Prérequis : Python 64 bits 3.10+, MSVC C++20 et CMake 3.20+.
45
+ Validation sur Python 3.12.3, MSVC 19.51 et pybind11 3.1.0.
46
+ Ouvrir une **x64 Native Tools Command Prompt** de Visual Studio :
47
+
48
+ ~~~bat
49
+ python -m venv .venv
50
+ .venv\Scripts\activate
51
+ python -m pip install .
52
+ ~~~
53
+
54
+ Réutiliser le .venv existant sans le recréer si souhaité.
55
+ Le moteur et les en-têtes Eigen sont inclus dans les sources et conservés par
56
+ les règles Git du projet : un checkout complet suffit pour `pip install .`.
57
+ CMake n'a pas besoin du réseau ; pip peut télécharger le backend de construction.
58
+ Pour une copie privée de ses dépendances, `python prepare_windows.py` récupère
59
+ uniquement les sources manquantes, sur Windows ou Linux. Il réutilise les sources
60
+ existantes et ne compile pas Eigen. Les corrections vérifiées par empreintes sont
61
+ appliquées avant d'installer une nouvelle copie du moteur.
62
+
63
+ Avec NumPy et les tests :
64
+
65
+ ~~~bat
66
+ python -m pip install ".[test]"
67
+ python tools\build_local.py --tests
68
+ python -m pytest -q
69
+ ~~~
70
+
71
+ `tools/build_local.py` installe le binaire qu'il construit avant de lancer les
72
+ tests natifs ; les appels Python suivants utilisent donc cette compilation.
73
+ INSTALL_WINDOWS.bat automatise préparation, installation, tests et exemples.
74
+
75
+ ## Installation Linux
76
+
77
+ Avec Python, venv, les en-têtes de développement Python, un compilateur C++20 et
78
+ CMake installés :
79
+
80
+ ~~~bash
81
+ python3 -m venv .venv
82
+ . .venv/bin/activate
83
+ python -m pip install .
84
+ ~~~
85
+
86
+ Un Eigen 3.4+ installé est prioritaire ; les en-têtes inclus servent de repli.
87
+ La validation Linux/GCC et ses limites figurent dans le rapport d'audit.
88
+
89
+ ## Premier prix
90
+
91
+ ~~~python
92
+ import deriweave_py as dw
93
+
94
+ asset = dw.Asset("AAPL")
95
+ product = dw.Product(dw.Call(dw.Spot(asset, 1.0), 100), payment_date=1.05)
96
+ market = dw.Market({"AAPL": 100}, rate=0.03, dividend_yields={"AAPL": 0.02})
97
+ model = dw.BlackScholes(0.20)
98
+ settings = dw.SimulationSettings(n_simulations=20_000, seed=42, antithetic=True)
99
+ result = dw.price(product, market=market, model=model, settings=settings)
100
+ print(result.price, result.standard_error, result.confidence_interval_95)
101
+ ~~~
102
+
103
+ L'observation à 1.0 et le paiement à 1.05 restent distincts.
104
+ 20 000 observations antithétiques produisent 40 000 trajectoires.
105
+
106
+ ## Produits composables
107
+
108
+ ~~~python
109
+ import deriweave_py as dw
110
+
111
+ observations = [
112
+ dw.Basket([dw.Spot("A", t), dw.Spot("B", t)], [0.5, 0.5])
113
+ for t in [0.25, 0.5, 0.75, 1.0]
114
+ ]
115
+ product = dw.Product(dw.Call(dw.Average(observations), 105), payment_date=1.0)
116
+ result = dw.price(product, market=dw.Market({"A": 100, "B": 110}, 0.03),
117
+ model=dw.BlackScholes([0.20, 0.25], [[1, 0.4], [0.4, 1]]))
118
+ print(result.price)
119
+ ~~~
120
+
121
+ Un call sur panier diffère d'un panier de calls. Les moyennes imbriquées
122
+ conservent leur ordre et leurs observations répétées.
123
+
124
+ ## Exercice anticipé
125
+
126
+ ~~~python
127
+ import deriweave_py as dw
128
+
129
+ t = dw.ExerciseTime
130
+ contract = dw.American(
131
+ payoff=dw.Put(dw.Spot("A", t), 100),
132
+ states=[dw.Spot("A", t)], start=0, maturity=1,
133
+ )
134
+ market = dw.Market({"A": 100}, 0.03)
135
+ model = dw.BlackScholes(0.20)
136
+ policy = dw.train_longstaff_schwartz(
137
+ contract, market=market, model=model,
138
+ settings=dw.LsmSettings(training_paths=4000, seed=7919,
139
+ max_exercise_time_step=1/12),
140
+ )
141
+ result = dw.price(policy, market=market, model=model,
142
+ settings=dw.SimulationSettings(n_simulations=6000, seed=42))
143
+ print(result.price, policy.exercise_dates)
144
+ ~~~
145
+
146
+ L'entraînement reste séparé de l'évaluation. Sous Heston, utiliser au minimum
147
+ spot et variance comme états pour une vanille. L'intervalle de confiance est
148
+ conditionnel à la politique apprise.
149
+
150
+ ## Vérifier une distribution
151
+
152
+ Après installation de `.[test,release]` et construction de la référence C++ avec
153
+ `python tools/build_local.py --tests` :
154
+
155
+ ~~~bash
156
+ python tools/check_distribution.py --tests
157
+ ~~~
158
+
159
+ Cette commande construit la wheel depuis l'archive source, contrôle ses contenus
160
+ et installe la wheel dans un venv neuf. Elle vérifie d'abord le pricing sans
161
+ NumPy, puis exécute tous les tests Python et les cinq exemples.
162
+ `--no-isolation` réutilise les dépendances de construction déjà installées.
163
+
164
+ ## Exemples et OpenMP
165
+
166
+ ~~~bash
167
+ python examples/demo.py
168
+ python examples/composition_demo.py
169
+ python examples/models_demo.py
170
+ python examples/structured_demo.py
171
+ python examples/exercise_demo.py
172
+ python tools/memory_check.py
173
+ ~~~
174
+
175
+ OpenMP est désactivé par défaut. Pour l'activer :
176
+
177
+ ~~~bash
178
+ python -m pip install . -Ccmake.define.DERIWEAVE_ENABLE_OPENMP=ON
179
+ ~~~
180
+
181
+ Utiliser ensuite SimulationSettings(use_openmp=True, num_threads=4).
182
+ dw.build_info() indique les capacités réelles du binaire.
183
+ Le runtime du compilateur est requis : vcomp140.dll sous MSVC, libgomp avec GCC.
184
+ La wheel séquentielle évite cette dépendance.
185
+
186
+ Les fonctions historiques european, asian et basket restent disponibles.
187
+ Base : [DeriWeave 0.1.0](https://github.com/AmineFendi94/DeriWeave),
188
+ commit 8e54378b0800c936e22c2abca0afaca751c73888, avec les corrections de portabilité
189
+ documentées dans l'audit. Licence MIT ; Eigen conserve ses licences.
@@ -0,0 +1,45 @@
1
+ """Compare repeated native engine runs with end-to-end Python price calls."""
2
+ import argparse
3
+ import json
4
+ from pathlib import Path
5
+ import platform
6
+ from statistics import median
7
+ import subprocess
8
+ import sys
9
+ from time import perf_counter
10
+ sys.path.insert(0,str(Path(__file__).resolve().parents[1]/"tests"))
11
+ from reference_cases import case
12
+ import deriweave_py as dw
13
+
14
+ parser=argparse.ArgumentParser()
15
+ parser.add_argument("--native",type=Path,required=True)
16
+ parser.add_argument("--observations",type=int,default=30000)
17
+ parser.add_argument("--repetitions",type=int,default=7)
18
+ parser.add_argument("--output",type=Path)
19
+ args=parser.parse_args()
20
+ rows=[]
21
+ for dynamics,contract in [("bs","european"),("bs","nested"),("heston","european"),("vg","autocall")]:
22
+ p,kwargs=case(dynamics,contract,args.observations)
23
+ dw.price(p,**kwargs)
24
+ durations=[]
25
+ for _ in range(args.repetitions):
26
+ start=perf_counter()
27
+ result=dw.price(p,**kwargs)
28
+ durations.append(perf_counter()-start)
29
+ native=json.loads(subprocess.check_output([
30
+ str(args.native.resolve()),dynamics,contract,str(args.observations),str(args.repetitions)],text=True))
31
+ if abs(result.price-native["price"])>2e-10:
32
+ raise RuntimeError("Native/Python price mismatch")
33
+ baseline=median(native["native_seconds"])
34
+ elapsed=median(durations)
35
+ rows.append(dict(model=dynamics,contract=contract,observations=args.observations,
36
+ repetitions=args.repetitions,native_seconds=baseline,python_seconds=elapsed,
37
+ ratio=elapsed/baseline,extra_microseconds=(elapsed-baseline)*1e6))
38
+ report=dict(platform=platform.platform(),python=platform.python_version(),
39
+ build=dw.build_info(),rows=rows,
40
+ scope="Python includes description conversion and native construction; native reuses prebuilt objects. Timings exclude process startup.")
41
+ text=json.dumps(report,indent=2)
42
+ print(text)
43
+ if args.output:
44
+ args.output.parent.mkdir(parents=True,exist_ok=True)
45
+ args.output.write_text(text+"\n",encoding="utf8")