splinekit 0.2.1__tar.gz → 0.2.3__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 (338) hide show
  1. {splinekit-0.2.1 → splinekit-0.2.3}/PKG-INFO +16 -3
  2. {splinekit-0.2.1 → splinekit-0.2.3}/README.md +15 -2
  3. splinekit-0.2.3/dev/ANSI-C/spline_padding_cmake/CMakeLists.txt +15 -0
  4. splinekit-0.2.3/dev/ANSI-C/spline_padding_cmake/spline_padding.c +275 -0
  5. splinekit-0.2.3/dev/ANSI-C/spline_padding_cmake/spline_padding.h +56 -0
  6. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/libspline_padding.dylib +0 -0
  7. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.c +275 -0
  8. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.h +56 -0
  9. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.pbxproj +295 -0
  10. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  11. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/xcuserdata/pthevena.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  12. splinekit-0.2.3/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/xcuserdata/pthevena.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  13. splinekit-0.2.3/dev/Jupyter/bspline_annihilate.ipynb +133 -0
  14. splinekit-0.2.3/dev/Jupyter/bspline_cardinal.ipynb +108 -0
  15. splinekit-0.2.3/dev/Jupyter/bspline_convolve_mono.ipynb +106 -0
  16. splinekit-0.2.3/dev/Jupyter/bspline_dual.ipynb +110 -0
  17. splinekit-0.2.3/dev/Jupyter/bspline_dual_property.ipynb +137 -0
  18. splinekit-0.2.3/dev/Jupyter/bspline_gauss_exo.ipynb +147 -0
  19. splinekit-0.2.3/dev/Jupyter/bspline_hello.ipynb +112 -0
  20. splinekit-0.2.3/dev/Jupyter/bspline_hello_grad.ipynb +113 -0
  21. splinekit-0.2.3/dev/Jupyter/bspline_hello_integral.ipynb +117 -0
  22. splinekit-0.2.3/dev/Jupyter/bspline_inv.ipynb +111 -0
  23. splinekit-0.2.3/dev/Jupyter/bspline_m_scale.ipynb +125 -0
  24. splinekit-0.2.3/dev/Jupyter/bspline_member.ipynb +109 -0
  25. splinekit-0.2.3/dev/Jupyter/bspline_member_diff.ipynb +140 -0
  26. splinekit-0.2.3/dev/Jupyter/bspline_member_integral.ipynb +114 -0
  27. splinekit-0.2.3/dev/Jupyter/bspline_numeric_stability.ipynb +513 -0
  28. splinekit-0.2.3/dev/Jupyter/bspline_ortho.ipynb +108 -0
  29. splinekit-0.2.3/dev/Jupyter/bspline_ortho_property.ipynb +133 -0
  30. splinekit-0.2.3/dev/Jupyter/bspline_partition_mono.ipynb +104 -0
  31. splinekit-0.2.3/dev/Jupyter/bspline_periodic_inv.ipynb +131 -0
  32. splinekit-0.2.3/dev/Jupyter/bspline_poles.ipynb +115 -0
  33. splinekit-0.2.3/dev/Jupyter/bspline_sinc.ipynb +137 -0
  34. splinekit-0.2.3/dev/Jupyter/bspline_spline_poly.ipynb +103 -0
  35. splinekit-0.2.3/dev/Jupyter/bspline_trigo_exo.ipynb +227 -0
  36. splinekit-0.2.3/dev/Jupyter/bspline_vs_cos.ipynb +141 -0
  37. splinekit-0.2.3/dev/Jupyter/bspline_vs_erf.ipynb +130 -0
  38. splinekit-0.2.3/dev/Jupyter/bspline_vs_exp.ipynb +154 -0
  39. splinekit-0.2.3/dev/Jupyter/bspline_vs_pi_as_sum.ipynb +118 -0
  40. splinekit-0.2.3/dev/Jupyter/bspline_vs_pi_at0.ipynb +121 -0
  41. splinekit-0.2.3/dev/Jupyter/bspline_vs_sin.ipynb +150 -0
  42. splinekit-0.2.3/dev/Jupyter/padding_data.ipynb +254 -0
  43. splinekit-0.2.3/dev/Jupyter/padding_speed.ipynb +219 -0
  44. splinekit-0.2.3/dev/Jupyter/spline_approximation.ipynb +162 -0
  45. splinekit-0.2.3/dev/Jupyter/spline_at_array.ipynb +365 -0
  46. splinekit-0.2.3/dev/Jupyter/spline_at_scalar.ipynb +1107 -0
  47. splinekit-0.2.3/dev/Jupyter/spline_bounds.ipynb +138 -0
  48. splinekit-0.2.3/dev/Jupyter/spline_evaluation_speed.ipynb +158 -0
  49. splinekit-0.2.3/dev/Jupyter/spline_interpolation.ipynb +159 -0
  50. splinekit-0.2.3/dev/Jupyter/spline_polynomials.ipynb +153 -0
  51. splinekit-0.2.3/dev/Jupyter/spline_random_1d.ipynb +170 -0
  52. splinekit-0.2.3/dev/Jupyter/spline_random_2d.ipynb +376 -0
  53. splinekit-0.2.3/dev/Wolfram/Bspline Poles.nb +2047 -0
  54. splinekit-0.2.3/dev/Wolfram/IntervalChecks.nb +2610 -0
  55. splinekit-0.2.3/dev/Wolfram/PeriodicSplinesChecks.nb +11404 -0
  56. splinekit-0.2.3/dev/Wolfram/SplinePaddingChecks.nb +7539 -0
  57. splinekit-0.2.3/dev/Wolfram/Test BSplines.nb +3205 -0
  58. splinekit-0.2.3/dev/Wolfram/Test PeriodicNonuniformPiecewise.nb +453 -0
  59. splinekit-0.2.3/dev/Wolfram/Test PeriodicSpline1D.nb +14686 -0
  60. splinekit-0.2.3/dev/Wolfram/Test SplinePadding.nb +3861 -0
  61. splinekit-0.2.3/dev/Wolfram/Test SplineUtilities.nb +2571 -0
  62. splinekit-0.2.3/dev/Wolfram/Verify doc.nb +3658 -0
  63. splinekit-0.2.3/dev/Wolfram/rescued Test SplinePadding.nb +3935 -0
  64. splinekit-0.2.3/dev/cpJupyter.sh +6 -0
  65. splinekit-0.2.3/dev/gzJupyter.sh +10 -0
  66. splinekit-0.2.3/dev/sk.numbers +0 -0
  67. splinekit-0.2.3/dev/zipJupyter.sh +11 -0
  68. splinekit-0.2.3/docs/bases/01_bases.rst +12 -0
  69. splinekit-0.2.3/docs/bases/index.rst +14 -0
  70. splinekit-0.2.3/docs/bsplines/01_bsplines.rst +12 -0
  71. splinekit-0.2.3/docs/bsplines/index.rst +14 -0
  72. splinekit-0.2.3/docs/demos/bspline/bspline_bases.rst +219 -0
  73. splinekit-0.2.3/docs/demos/bspline/bspline_inverse.rst +59 -0
  74. splinekit-0.2.3/docs/demos/bspline/bspline_m_scale.rst +23 -0
  75. splinekit-0.2.3/docs/demos/bspline/bspline_members.rst +38 -0
  76. splinekit-0.2.3/docs/demos/bspline/bspline_numeric_stability.ipynb.gz +0 -0
  77. splinekit-0.2.3/docs/demos/bspline/bspline_poles.rst +115 -0
  78. splinekit-0.2.3/docs/demos/bspline/bspline_stability.rst +264 -0
  79. splinekit-0.2.3/docs/demos/bspline/bspline_vs_pi.rst +36 -0
  80. splinekit-0.2.3/docs/demos/bspline/hello_bspline.rst +38 -0
  81. splinekit-0.2.3/docs/demos/bspline/index.rst +31 -0
  82. splinekit-0.2.3/docs/demos/bspline/spline_engineer_func.rst +103 -0
  83. splinekit-0.2.3/docs/demos/bspline/spline_vs_poly.rst +108 -0
  84. splinekit-0.2.3/docs/demos/index.rst +24 -0
  85. splinekit-0.2.3/docs/demos/padding/index.rst +22 -0
  86. splinekit-0.2.3/docs/demos/padding/padding.rst +355 -0
  87. splinekit-0.2.3/docs/demos/padding/padding_speed.ipynb.gz +0 -0
  88. splinekit-0.2.3/docs/demos/spline1d/bounds.rst +114 -0
  89. splinekit-0.2.3/docs/demos/spline1d/constructors.rst +68 -0
  90. splinekit-0.2.3/docs/demos/spline1d/evaluation.rst +228 -0
  91. splinekit-0.2.3/docs/demos/spline1d/index.rst +27 -0
  92. splinekit-0.2.3/docs/demos/spline1d/polynomials.rst +138 -0
  93. splinekit-0.2.3/docs/demos/spline1d/random1d.rst +28 -0
  94. splinekit-0.2.3/docs/demos/spline1d/random2d.rst +43 -0
  95. splinekit-0.2.3/docs/demos/spline1d/spline_evaluation_speed.ipynb.gz +0 -0
  96. {splinekit-0.2.1 → splinekit-0.2.3}/docs/glossary/glossary-numbers.rst +8 -8
  97. {splinekit-0.2.1 → splinekit-0.2.3}/docs/glossary/glossary-polynomials.rst +9 -9
  98. {splinekit-0.2.1 → splinekit-0.2.3}/docs/glossary/glossary-splines.rst +11 -11
  99. {splinekit-0.2.1 → splinekit-0.2.3}/docs/glossary/glossary-terminology.rst +10 -10
  100. splinekit-0.2.3/docs/glossary/index.rst +13 -0
  101. splinekit-0.2.3/docs/index.rst +46 -0
  102. splinekit-0.2.3/docs/installation/index.rst +5 -0
  103. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/bounded/01_bounded.rst +7 -7
  104. splinekit-0.2.3/docs/interval/bounded/02_open.rst +12 -0
  105. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/bounded/03_open_closed.rst +7 -7
  106. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/bounded/04_closed.rst +7 -7
  107. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/bounded/05_closed_open.rst +7 -7
  108. splinekit-0.2.3/docs/interval/bounded/index.rst +18 -0
  109. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/degenerate/01_degenerate.rst +7 -7
  110. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/degenerate/02_singleton.rst +7 -7
  111. splinekit-0.2.3/docs/interval/degenerate/index.rst +15 -0
  112. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/01_half_bounded.rst +7 -7
  113. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/02_above.rst +7 -7
  114. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/03_not_below.rst +7 -7
  115. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/04_not_above.rst +7 -7
  116. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/05_below.rst +7 -7
  117. splinekit-0.2.3/docs/interval/half_bounded/index.rst +18 -0
  118. splinekit-0.2.3/docs/interval/index.rst +14 -0
  119. splinekit-0.2.3/docs/interval/interval/01_interval.rst +12 -0
  120. splinekit-0.2.3/docs/interval/interval/index.rst +15 -0
  121. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/universal/01_universal.rst +7 -7
  122. splinekit-0.2.3/docs/interval/universal/02_empty.rst +12 -0
  123. splinekit-0.2.3/docs/interval/universal/03_rr.rst +12 -0
  124. splinekit-0.2.3/docs/interval/universal/index.rst +16 -0
  125. splinekit-0.2.3/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +12 -0
  126. splinekit-0.2.3/docs/periodic_nonuniform_piecewise/index.rst +14 -0
  127. splinekit-0.2.3/docs/periodic_spline_1d/01_periodic_spline_1d.rst +12 -0
  128. splinekit-0.2.3/docs/periodic_spline_1d/index.rst +17 -0
  129. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/matplotlib-color.rst +3 -2
  130. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/matplotlib-linestyle.rst +3 -2
  131. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/matplotlib-marker.rst +28 -27
  132. splinekit-0.2.3/docs/spline_padding/01_spline_padding.rst +12 -0
  133. splinekit-0.2.3/docs/spline_padding/index.rst +16 -0
  134. splinekit-0.2.3/docs/spline_utilities/01_spline_utilities.rst +12 -0
  135. splinekit-0.2.3/docs/spline_utilities/index.rst +16 -0
  136. {splinekit-0.2.1 → splinekit-0.2.3}/pyproject.toml +1 -1
  137. splinekit-0.2.3/temp/bspline_stability.py +143 -0
  138. splinekit-0.2.1/docs/bases/01_bases.rst +0 -12
  139. splinekit-0.2.1/docs/bases/index.rst +0 -14
  140. splinekit-0.2.1/docs/bsplines/01_bsplines.rst +0 -12
  141. splinekit-0.2.1/docs/bsplines/index.rst +0 -14
  142. splinekit-0.2.1/docs/glossary/index.rst +0 -13
  143. splinekit-0.2.1/docs/index.rst +0 -45
  144. splinekit-0.2.1/docs/installation/index.rst +0 -5
  145. splinekit-0.2.1/docs/interval/bounded/02_open.rst +0 -12
  146. splinekit-0.2.1/docs/interval/bounded/index.rst +0 -18
  147. splinekit-0.2.1/docs/interval/degenerate/index.rst +0 -15
  148. splinekit-0.2.1/docs/interval/half_bounded/index.rst +0 -18
  149. splinekit-0.2.1/docs/interval/index.rst +0 -14
  150. splinekit-0.2.1/docs/interval/interval/01_interval.rst +0 -12
  151. splinekit-0.2.1/docs/interval/interval/index.rst +0 -15
  152. splinekit-0.2.1/docs/interval/universal/02_empty.rst +0 -12
  153. splinekit-0.2.1/docs/interval/universal/03_rr.rst +0 -12
  154. splinekit-0.2.1/docs/interval/universal/index.rst +0 -16
  155. splinekit-0.2.1/docs/jupyter_labs/bspline_bases.ipynb.gz +0 -0
  156. splinekit-0.2.1/docs/jupyter_labs/bspline_interactive_shape.ipynb.gz +0 -0
  157. splinekit-0.2.1/docs/jupyter_labs/bspline_inverse_sequence.ipynb.gz +0 -0
  158. splinekit-0.2.1/docs/jupyter_labs/bspline_m_scale.ipynb.gz +0 -0
  159. splinekit-0.2.1/docs/jupyter_labs/bspline_numeric_stability.ipynb.gz +0 -0
  160. splinekit-0.2.1/docs/jupyter_labs/bspline_poles.ipynb.gz +0 -0
  161. splinekit-0.2.1/docs/jupyter_labs/bspline_random1d.ipynb.gz +0 -0
  162. splinekit-0.2.1/docs/jupyter_labs/bspline_random2d.ipynb.gz +0 -0
  163. splinekit-0.2.1/docs/jupyter_labs/bspline_static_shape.ipynb.gz +0 -0
  164. splinekit-0.2.1/docs/jupyter_labs/bspline_vs_exponentials.ipynb.gz +0 -0
  165. splinekit-0.2.1/docs/jupyter_labs/bspline_vs_pi.ipynb.gz +0 -0
  166. splinekit-0.2.1/docs/jupyter_labs/bspline_vs_polynomials.ipynb.gz +0 -0
  167. splinekit-0.2.1/docs/jupyter_labs/bspline_vs_trigonometry.ipynb.gz +0 -0
  168. splinekit-0.2.1/docs/jupyter_labs/index.rst +0 -84
  169. splinekit-0.2.1/docs/jupyter_labs/padding.ipynb.gz +0 -0
  170. splinekit-0.2.1/docs/jupyter_labs/periodicspline1d_bounds.ipynb.gz +0 -0
  171. splinekit-0.2.1/docs/jupyter_labs/periodicspline1d_creator.ipynb.gz +0 -0
  172. splinekit-0.2.1/docs/jupyter_labs/periodicspline1d_evaluate.ipynb.gz +0 -0
  173. splinekit-0.2.1/docs/jupyter_labs/periodicspline1d_polynomials.ipynb.gz +0 -0
  174. splinekit-0.2.1/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +0 -12
  175. splinekit-0.2.1/docs/periodic_nonuniform_piecewise/index.rst +0 -14
  176. splinekit-0.2.1/docs/periodic_spline_1d/01_periodic_spline_1d.rst +0 -12
  177. splinekit-0.2.1/docs/periodic_spline_1d/index.rst +0 -15
  178. splinekit-0.2.1/docs/spline_padding/01_spline_padding.rst +0 -12
  179. splinekit-0.2.1/docs/spline_padding/index.rst +0 -14
  180. splinekit-0.2.1/docs/spline_utilities/01_spline_utilities.rst +0 -12
  181. splinekit-0.2.1/docs/spline_utilities/index.rst +0 -14
  182. splinekit-0.2.1/docs/spline_utilities/noxfile.py +0 -18
  183. {splinekit-0.2.1 → splinekit-0.2.3}/.github/workflows/deploy-docs.yml +0 -0
  184. {splinekit-0.2.1 → splinekit-0.2.3}/.github/workflows/release.yml +0 -0
  185. {splinekit-0.2.1 → splinekit-0.2.3}/.github/workflows/test.yml +0 -0
  186. {splinekit-0.2.1 → splinekit-0.2.3}/.gitignore +0 -0
  187. {splinekit-0.2.1 → splinekit-0.2.3}/.jupyterlite.doit.db +0 -0
  188. {splinekit-0.2.1 → splinekit-0.2.3}/.virtual_documents/docs/tutorial/dummy.ipynb +0 -0
  189. {splinekit-0.2.1 → splinekit-0.2.3}/CMakeLists.txt +0 -0
  190. {splinekit-0.2.1 → splinekit-0.2.3}/LICENSE +0 -0
  191. {splinekit-0.2.1 → splinekit-0.2.3}/_output/api/translations/all.json +0 -0
  192. {splinekit-0.2.1 → splinekit-0.2.3}/_output/api/translations/en.json +0 -0
  193. {splinekit-0.2.1 → splinekit-0.2.3}/_output/api/workspaces/all.json +0 -0
  194. {splinekit-0.2.1 → splinekit-0.2.3}/_output/bootstrap.js +0 -0
  195. {splinekit-0.2.1 → splinekit-0.2.3}/_output/config-utils.js +0 -0
  196. {splinekit-0.2.1 → splinekit-0.2.3}/_output/consoles/favicon.ico +0 -0
  197. {splinekit-0.2.1 → splinekit-0.2.3}/_output/consoles/index.html +0 -0
  198. {splinekit-0.2.1 → splinekit-0.2.3}/_output/consoles/jupyter-lite.ipynb +0 -0
  199. {splinekit-0.2.1 → splinekit-0.2.3}/_output/consoles/jupyter-lite.json +0 -0
  200. {splinekit-0.2.1 → splinekit-0.2.3}/_output/consoles/package.json +0 -0
  201. {splinekit-0.2.1 → splinekit-0.2.3}/_output/doc/tree/index.html +0 -0
  202. {splinekit-0.2.1 → splinekit-0.2.3}/_output/doc/workspaces/index.html +0 -0
  203. {splinekit-0.2.1 → splinekit-0.2.3}/_output/edit/favicon.ico +0 -0
  204. {splinekit-0.2.1 → splinekit-0.2.3}/_output/edit/index.html +0 -0
  205. {splinekit-0.2.1 → splinekit-0.2.3}/_output/edit/jupyter-lite.ipynb +0 -0
  206. {splinekit-0.2.1 → splinekit-0.2.3}/_output/edit/jupyter-lite.json +0 -0
  207. {splinekit-0.2.1 → splinekit-0.2.3}/_output/edit/package.json +0 -0
  208. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/install.json +0 -0
  209. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/package.json +0 -0
  210. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/package.json.orig +0 -0
  211. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/plugin.json +0 -0
  212. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js +0 -0
  213. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js.LICENSE.txt +0 -0
  214. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/509.d51a8122d1920ac82323.js +0 -0
  215. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/720.094c38d70b1dec0ceea7.js +0 -0
  216. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/remoteEntry.94495aac41d2fef6ad41.js +0 -0
  217. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/style.js +0 -0
  218. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab-jupytext/static/third-party-licenses.json +0 -0
  219. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/install.json +0 -0
  220. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/package.json +0 -0
  221. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/static/568.1e2faa2ba0bbe59c4780.js +0 -0
  222. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/static/747.67662283a5707eeb4d4c.js +0 -0
  223. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/static/remoteEntry.5cbb9d2323598fbda535.js +0 -0
  224. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/static/style.js +0 -0
  225. {splinekit-0.2.1 → splinekit-0.2.3}/_output/extensions/jupyterlab_pygments/static/third-party-licenses.json +0 -0
  226. {splinekit-0.2.1 → splinekit-0.2.3}/_output/icon-120x120.png +0 -0
  227. {splinekit-0.2.1 → splinekit-0.2.3}/_output/icon-512x512.png +0 -0
  228. {splinekit-0.2.1 → splinekit-0.2.3}/_output/index.html +0 -0
  229. {splinekit-0.2.1 → splinekit-0.2.3}/_output/jupyter-lite.ipynb +0 -0
  230. {splinekit-0.2.1 → splinekit-0.2.3}/_output/jupyter-lite.json +0 -0
  231. {splinekit-0.2.1 → splinekit-0.2.3}/_output/jupyterlite.schema.v0.json +0 -0
  232. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/favicon.ico +0 -0
  233. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/index.html +0 -0
  234. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/jupyter-lite.ipynb +0 -0
  235. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/jupyter-lite.json +0 -0
  236. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/package.json +0 -0
  237. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/tree/index.html +0 -0
  238. {splinekit-0.2.1 → splinekit-0.2.3}/_output/lab/workspaces/index.html +0 -0
  239. {splinekit-0.2.1 → splinekit-0.2.3}/_output/manifest.webmanifest +0 -0
  240. {splinekit-0.2.1 → splinekit-0.2.3}/_output/notebooks/favicon.ico +0 -0
  241. {splinekit-0.2.1 → splinekit-0.2.3}/_output/notebooks/index.html +0 -0
  242. {splinekit-0.2.1 → splinekit-0.2.3}/_output/notebooks/jupyter-lite.ipynb +0 -0
  243. {splinekit-0.2.1 → splinekit-0.2.3}/_output/notebooks/jupyter-lite.json +0 -0
  244. {splinekit-0.2.1 → splinekit-0.2.3}/_output/notebooks/package.json +0 -0
  245. {splinekit-0.2.1 → splinekit-0.2.3}/_output/package.json +0 -0
  246. {splinekit-0.2.1 → splinekit-0.2.3}/_output/repl/index.html +0 -0
  247. {splinekit-0.2.1 → splinekit-0.2.3}/_output/repl/jupyter-lite.ipynb +0 -0
  248. {splinekit-0.2.1 → splinekit-0.2.3}/_output/repl/jupyter-lite.json +0 -0
  249. {splinekit-0.2.1 → splinekit-0.2.3}/_output/repl/package.json +0 -0
  250. {splinekit-0.2.1 → splinekit-0.2.3}/_output/service-worker.js +0 -0
  251. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-busy-1.ico +0 -0
  252. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-busy-2.ico +0 -0
  253. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-busy-3.ico +0 -0
  254. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-file.ico +0 -0
  255. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-notebook.ico +0 -0
  256. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon-terminal.ico +0 -0
  257. {splinekit-0.2.1 → splinekit-0.2.3}/_output/static/favicons/favicon.ico +0 -0
  258. {splinekit-0.2.1 → splinekit-0.2.3}/_output/tree/favicon.ico +0 -0
  259. {splinekit-0.2.1 → splinekit-0.2.3}/_output/tree/index.html +0 -0
  260. {splinekit-0.2.1 → splinekit-0.2.3}/_output/tree/jupyter-lite.ipynb +0 -0
  261. {splinekit-0.2.1 → splinekit-0.2.3}/_output/tree/jupyter-lite.json +0 -0
  262. {splinekit-0.2.1 → splinekit-0.2.3}/_output/tree/package.json +0 -0
  263. {splinekit-0.2.1 → splinekit-0.2.3}/ansi_c/spline_padding/src/spline_padding.c +0 -0
  264. {splinekit-0.2.1 → splinekit-0.2.3}/ansi_c/spline_padding/src/spline_padding.h +0 -0
  265. {splinekit-0.2.1 → splinekit-0.2.3}/docs/.jupyterlite.doit.db +0 -0
  266. {splinekit-0.2.1 → splinekit-0.2.3}/docs/_static/custom.css +0 -0
  267. {splinekit-0.2.1 → splinekit-0.2.3}/docs/bases/noxfile.py +0 -0
  268. {splinekit-0.2.1 → splinekit-0.2.3}/docs/bsplines/noxfile.py +0 -0
  269. {splinekit-0.2.1 → splinekit-0.2.3}/docs/conf.py +0 -0
  270. {splinekit-0.2.1 → splinekit-0.2.3}/docs/environment.yml +0 -0
  271. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/bounded/noxfile.py +0 -0
  272. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/degenerate/noxfile.py +0 -0
  273. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/half_bounded/noxfile.py +0 -0
  274. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/interval/noxfile.py +0 -0
  275. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/noxfile.py +0 -0
  276. {splinekit-0.2.1 → splinekit-0.2.3}/docs/interval/universal/noxfile.py +0 -0
  277. {splinekit-0.2.1/docs/jupyter_labs → splinekit-0.2.3/docs}/noxfile.py +0 -0
  278. {splinekit-0.2.1/docs → splinekit-0.2.3/docs/periodic_nonuniform_piecewise}/noxfile.py +0 -0
  279. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m00.png +0 -0
  280. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m01.png +0 -0
  281. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m02.png +0 -0
  282. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m03.png +0 -0
  283. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m04.png +0 -0
  284. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m05.png +0 -0
  285. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m06.png +0 -0
  286. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m07.png +0 -0
  287. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m08.png +0 -0
  288. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m09.png +0 -0
  289. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m10.png +0 -0
  290. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m11.png +0 -0
  291. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m12.png +0 -0
  292. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m13.png +0 -0
  293. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m14.png +0 -0
  294. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m15.png +0 -0
  295. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m16.png +0 -0
  296. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m17.png +0 -0
  297. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m18.png +0 -0
  298. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m19.png +0 -0
  299. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m20.png +0 -0
  300. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m21.png +0 -0
  301. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m22.png +0 -0
  302. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m23.png +0 -0
  303. {splinekit-0.2.1 → splinekit-0.2.3}/docs/periodic_spline_1d/m24.png +0 -0
  304. {splinekit-0.2.1/docs/periodic_nonuniform_piecewise → splinekit-0.2.3/docs/periodic_spline_1d}/noxfile.py +0 -0
  305. {splinekit-0.2.1/docs/periodic_spline_1d → splinekit-0.2.3/docs/spline_padding}/noxfile.py +0 -0
  306. {splinekit-0.2.1/docs/spline_padding → splinekit-0.2.3/docs/spline_utilities}/noxfile.py +0 -0
  307. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/__init__.py +0 -0
  308. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/bases.py +0 -0
  309. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/bsplines.py +0 -0
  310. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/__init__.py +0 -0
  311. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/_known_intervals.py +0 -0
  312. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/above.py +0 -0
  313. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/below.py +0 -0
  314. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/bounded.py +0 -0
  315. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/closed.py +0 -0
  316. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/closed_open.py +0 -0
  317. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/degenerate.py +0 -0
  318. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/empty.py +0 -0
  319. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/half_bounded.py +0 -0
  320. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/interval.py +0 -0
  321. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/mypy.ini +0 -0
  322. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/not_above.py +0 -0
  323. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/not_below.py +0 -0
  324. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/open.py +0 -0
  325. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/open_closed.py +0 -0
  326. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/rr.py +0 -0
  327. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/singleton.py +0 -0
  328. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/interval/universal.py +0 -0
  329. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/mypy.ini +0 -0
  330. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/periodic_nonuniform_piecewise.py +0 -0
  331. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/periodic_spline_1d.py +0 -0
  332. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/spline_padding.py +0 -0
  333. {splinekit-0.2.1 → splinekit-0.2.3}/src/splinekit/spline_utilities.py +0 -0
  334. {splinekit-0.2.1 → splinekit-0.2.3}/tests/test_bsplines.py +0 -0
  335. {splinekit-0.2.1 → splinekit-0.2.3}/tests/test_periodic_nonuniform_piecewise.py +0 -0
  336. {splinekit-0.2.1 → splinekit-0.2.3}/tests/test_periodic_spline_1d.py +0 -0
  337. {splinekit-0.2.1 → splinekit-0.2.3}/tests/test_spline_padding.py +0 -0
  338. {splinekit-0.2.1 → splinekit-0.2.3}/tests/test_spline_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splinekit
3
- Version: 0.2.1
3
+ Version: 0.2.3
4
4
  Summary: A set of functions and classes to handle periodic 1D polynomial splines
5
5
  Author-Email: =?utf-8?q?Philippe_Th=C3=A9venaz?= <philippe.thevenaz@icloud.com>
6
6
  Maintainer-Email: =?utf-8?q?Philippe_Th=C3=A9venaz?= <philippe.thevenaz@icloud.com>
@@ -52,8 +52,10 @@ Description-Content-Type: text/markdown
52
52
  <!-- splinekit/README.md -->
53
53
 
54
54
  # splinekit: Spline Operations
55
- `splinekit` is a Python-based open-source software library aimed at the
56
- manipulation of one-dimensional periodic splines.
55
+ `splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
56
+
57
+ | ***<div style="background-color:aliceblue">&#160;&#160;Full documentation at https://splinekit.github.io/ &#160;&#160;</div>*** |
58
+ | - |
57
59
 
58
60
  ## Installation
59
61
  You need at least `Python 3.11` to install `splinekit`.
@@ -109,3 +111,14 @@ Install `splinekit` development environment in editable mode
109
111
  ```shell
110
112
  pip install -e .[dev]
111
113
  ```
114
+
115
+ ## Release Notes
116
+
117
+ ### 0.1.0
118
+ First stable version. Pure Python.
119
+
120
+ ### 0.2.1
121
+ Same API as 0.1.0. Ansi-C dynamic library.
122
+
123
+ ### 0.2.2
124
+ Some demos added
@@ -1,8 +1,10 @@
1
1
  <!-- splinekit/README.md -->
2
2
 
3
3
  # splinekit: Spline Operations
4
- `splinekit` is a Python-based open-source software library aimed at the
5
- manipulation of one-dimensional periodic splines.
4
+ `splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
5
+
6
+ | ***<div style="background-color:aliceblue">&#160;&#160;Full documentation at https://splinekit.github.io/ &#160;&#160;</div>*** |
7
+ | - |
6
8
 
7
9
  ## Installation
8
10
  You need at least `Python 3.11` to install `splinekit`.
@@ -58,3 +60,14 @@ Install `splinekit` development environment in editable mode
58
60
  ```shell
59
61
  pip install -e .[dev]
60
62
  ```
63
+
64
+ ## Release Notes
65
+
66
+ ### 0.1.0
67
+ First stable version. Pure Python.
68
+
69
+ ### 0.2.1
70
+ Same API as 0.1.0. Ansi-C dynamic library.
71
+
72
+ ### 0.2.2
73
+ Some demos added
@@ -0,0 +1,15 @@
1
+ cmake_minimum_required(VERSION 3.23)
2
+
3
+ project(Padding)
4
+
5
+ add_library(Padding SHARED)
6
+
7
+ target_sources(Padding
8
+ PRIVATE
9
+ spline_padding.c
10
+ PUBLIC
11
+ FILE_SET spline_padding
12
+ TYPE HEADERS
13
+ FILES
14
+ spline_padding.h
15
+ )
@@ -0,0 +1,275 @@
1
+ #include "spline_padding.h"
2
+
3
+ extern void get_samples_to_coeff_p (
4
+ double data[],
5
+ int32_t dataCount,
6
+ double pole[],
7
+ int32_t poleCount
8
+ ) {
9
+ if ((NULL == data) || (0 >= dataCount)) {
10
+ return;
11
+ }
12
+ if ((NULL == pole) || (0 >= poleCount)) {
13
+ return;
14
+ }
15
+ if ((0 != poleCount) && (1 != dataCount)) {
16
+ for (int q = 0; q < poleCount; q++) {
17
+ const double z = pole[q];
18
+ double sigma = data[0];
19
+ double zeta = z;
20
+ int k = 1;
21
+ while ((k < dataCount) && (0.0 != zeta)) {
22
+ sigma += zeta * data[dataCount - k];
23
+ zeta *= z;
24
+ k++;
25
+ }
26
+ data[0] = sigma / (1.0 - zeta);
27
+ for (int k = 1; k < dataCount; k++) {
28
+ data[k] += z * data[k - 1];
29
+ }
30
+ sigma = data[dataCount - 1];
31
+ zeta = z;
32
+ k = 0;
33
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
34
+ sigma += zeta * data[k];
35
+ zeta *= z;
36
+ k++;
37
+ }
38
+ const double z12 = (1.0 - z) * (1.0 - z);
39
+ data[dataCount - 1] = z12 * sigma / (1.0 - zeta);
40
+ for (int k = 1; k < dataCount; k++) {
41
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
42
+ }
43
+ }
44
+ }
45
+ } /* end get_samples_to_coeff_p */
46
+
47
+ extern void get_samples_to_coeff_n (
48
+ double data[],
49
+ int32_t dataCount,
50
+ double pole[],
51
+ int32_t poleCount
52
+ ) {
53
+ if ((NULL == data) || (0 >= dataCount)) {
54
+ return;
55
+ }
56
+ if ((NULL == pole) || (0 >= poleCount)) {
57
+ return;
58
+ }
59
+ if ((0 != poleCount) && (1 != dataCount)) {
60
+ for (int q = 0; q < poleCount; q++) {
61
+ const double z = pole[q];
62
+ double sigma1 = data[0];
63
+ double sigma2 = data[dataCount - 1];
64
+ double zeta = z;
65
+ int k = 1;
66
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
67
+ sigma1 += zeta * data[k];
68
+ sigma2 += zeta * data[dataCount - 1 - k];
69
+ zeta *= z;
70
+ k++;
71
+ }
72
+ data[0] = (sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
73
+ for (int k = 1; k < dataCount; k++) {
74
+ data[k] += z * data[k - 1];
75
+ }
76
+ const double z12 = (1.0 - z) * (1.0 - z);
77
+ data[dataCount - 1] = z12 * (z * data[dataCount - 2] + data[dataCount - 1]) / (1.0 - z * z);
78
+ for (int k = 1; k < dataCount; k++) {
79
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
80
+ }
81
+ }
82
+ }
83
+ } /* end get_samples_to_coeff_n */
84
+
85
+ extern void get_samples_to_coeff_w (
86
+ double data[],
87
+ int32_t dataCount,
88
+ double pole[],
89
+ int32_t poleCount
90
+ ) {
91
+ if ((NULL == data) || (0 >= dataCount)) {
92
+ return;
93
+ }
94
+ if ((NULL == pole) || (0 >= poleCount)) {
95
+ return;
96
+ }
97
+ if ((0 != poleCount) && (1 != dataCount)) {
98
+ for (int q = 0; q < poleCount; q++) {
99
+ const double z = pole[q];
100
+ double sigma1 = 0.0;
101
+ double sigma2 = 0.0;
102
+ double zeta = 1.0;
103
+ int k = 0;
104
+ while ((k < dataCount) && (0.0 != zeta)) {
105
+ sigma1 += zeta * data[k];
106
+ sigma2 += zeta * data[dataCount - 1 - k];
107
+ zeta *= z;
108
+ k++;
109
+ }
110
+ data[0] += z * (sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
111
+ for (int k = 1; k < dataCount; k++) {
112
+ data[k] += z * data[k - 1];
113
+ }
114
+ const double z12 = (1.0 - z) * (1.0 - z);
115
+ data[dataCount - 1] *= 1.0 - z;
116
+ for (int k = 1; k < dataCount; k++) {
117
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
118
+ }
119
+ }
120
+ }
121
+ } /* end get_samples_to_coeff_w */
122
+
123
+ extern void get_samples_to_coeff_a (
124
+ double data[],
125
+ int32_t dataCount,
126
+ double pole[],
127
+ int32_t poleCount
128
+ ) {
129
+ if ((NULL == data) || (0 >= dataCount)) {
130
+ return;
131
+ }
132
+ if ((NULL == pole) || (0 >= poleCount)) {
133
+ return;
134
+ }
135
+ if ((0 != poleCount) && (1 != dataCount)) {
136
+ for (int q = 0; q < poleCount; q++) {
137
+ const double z = pole[q];
138
+ double sigma1 = 0.0;
139
+ double sigma2 = 0.0;
140
+ double zeta = z;
141
+ int k = 1;
142
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
143
+ sigma1 += zeta * data[k];
144
+ sigma2 += zeta * data[dataCount - 1 - k];
145
+ zeta *= z;
146
+ k++;
147
+ }
148
+ data[0] = ((data[0] - zeta * data[dataCount - 1]) * (1.0 + z) / (1.0 - z) - sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
149
+ for (int k = 1; k < dataCount; k++) {
150
+ data[k] += z * data[k - 1];
151
+ }
152
+ const double z12 = (1.0 - z) * (1.0 - z);
153
+ data[dataCount - 1] -= z * data[dataCount - 2];
154
+ for (int k = 1; k < dataCount; k++) {
155
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
156
+ }
157
+ }
158
+ }
159
+ } /* end get_samples_to_coeff_a */
160
+
161
+ extern void get_samples_to_coeff_np (
162
+ double data[],
163
+ int32_t dataCount,
164
+ double pole[],
165
+ int32_t poleCount
166
+ ) {
167
+ if ((NULL == data) || (0 >= dataCount)) {
168
+ return;
169
+ }
170
+ if ((NULL == pole) || (0 >= poleCount)) {
171
+ return;
172
+ }
173
+ for (int q = 0; q < poleCount; q++) {
174
+ const double z = pole[q];
175
+ double sigma1 = data[0];
176
+ double sigma2 = data[dataCount - 1];
177
+ double zeta = z;
178
+ int k = 1;
179
+ while ((k < dataCount) && (0.0 != zeta)) {
180
+ sigma1 += zeta * data[k];
181
+ sigma2 += zeta * data[dataCount - 1 - k];
182
+ zeta *= z;
183
+ k++;
184
+ }
185
+ const double Z0 = z / (1.0 + zeta);
186
+ sigma1 *= Z0;
187
+ sigma2 *= Z0;
188
+ data[0] -= sigma2;
189
+ for (int k = 1; k < dataCount; k++) {
190
+ data[k] += z * data[k - 1];
191
+ }
192
+ zeta *= zeta;
193
+ const double z12 = (1.0 - z) * (1.0 - z);
194
+ const double Z1 = (1.0 - z) / (1.0 + z);
195
+ data[dataCount - 1] *= (1.0 + zeta) * Z1;
196
+ data[dataCount - 1] -= (sigma2 * zeta / z + sigma1) * Z1;
197
+ for (int k = 1; k < dataCount; k++) {
198
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
199
+ }
200
+ }
201
+ } /* end get_samples_to_coeff_np */
202
+
203
+ extern void get_samples_to_coeff_nn (
204
+ double data[],
205
+ int32_t dataCount,
206
+ double pole[],
207
+ int32_t poleCount
208
+ ) {
209
+ if ((NULL == data) || (0 >= dataCount)) {
210
+ return;
211
+ }
212
+ if ((NULL == pole) || (0 >= poleCount)) {
213
+ return;
214
+ }
215
+ for (int q = 0; q < poleCount; q++) {
216
+ const double z = pole[q];
217
+ double sigma1 = 0.0;
218
+ double sigma2 = 0.0;
219
+ double zeta = 1.0;
220
+ int k = 0;
221
+ while ((k < dataCount) && (0.0 != zeta)) {
222
+ sigma1 += zeta * data[k];
223
+ sigma2 += zeta * data[dataCount - 1 - k];
224
+ zeta *= z;
225
+ k++;
226
+ }
227
+ zeta *= z;
228
+ data[0] -= (sigma1 - zeta * sigma2) * z * z / (1.0 - zeta * zeta);
229
+ for (int k = 1; k < dataCount; k++) {
230
+ data[k] += z * data[k - 1];
231
+ }
232
+ const double z12 = (1.0 - z) * (1.0 - z);
233
+ data[dataCount - 1] *= z12;
234
+ for (int k = 1; k < dataCount; k++) {
235
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
236
+ }
237
+ }
238
+ } /* end get_samples_to_coeff_nn */
239
+
240
+ extern void get_samples_to_coeff_nw (
241
+ double data[],
242
+ int32_t dataCount,
243
+ double pole[],
244
+ int32_t poleCount
245
+ ) {
246
+ if ((NULL == data) || (0 >= dataCount)) {
247
+ return;
248
+ }
249
+ if ((NULL == pole) || (0 >= poleCount)) {
250
+ return;
251
+ }
252
+ for (int q = 0; q < poleCount; q++) {
253
+ const double z = pole[q];
254
+ double sigma1 = 0.0;
255
+ double sigma2 = 0.0;
256
+ double zeta = 1.0;
257
+ int k = 0;
258
+ while ((k < dataCount) && (0.0 != zeta)) {
259
+ sigma1 += zeta * data[k];
260
+ sigma2 += zeta * data[dataCount - 1 - k];
261
+ zeta *= z;
262
+ k++;
263
+ }
264
+ data[0] -= (sigma1 - zeta * sigma2) * z / (1.0 - zeta * zeta);
265
+ for (int k = 1; k < dataCount; k++) {
266
+ data[k] += z * data[k - 1];
267
+ }
268
+ const double z12 = (1.0 - z) * (1.0 - z);
269
+ data[dataCount - 1] *= z12 / (1.0 + z);
270
+ for (int k = 1; k < dataCount; k++) {
271
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
272
+ }
273
+ }
274
+ } /* end get_samples_to_coeff_nw */
275
+
@@ -0,0 +1,56 @@
1
+ #ifndef spline_padding_h
2
+ #define spline_padding_h
3
+
4
+ #include <stdio.h>
5
+ #include <stdlib.h>
6
+
7
+ extern void get_samples_to_coeff_p (
8
+ double *data,
9
+ int32_t dataCount,
10
+ double *pole,
11
+ int32_t poleCount
12
+ );
13
+
14
+ extern void get_samples_to_coeff_n (
15
+ double *data,
16
+ int32_t dataCount,
17
+ double *pole,
18
+ int32_t poleCount
19
+ );
20
+
21
+ extern void get_samples_to_coeff_w (
22
+ double *data,
23
+ int32_t dataCount,
24
+ double *pole,
25
+ int32_t poleCount
26
+ );
27
+
28
+ extern void get_samples_to_coeff_a (
29
+ double *data,
30
+ int32_t dataCount,
31
+ double *pole,
32
+ int32_t poleCount
33
+ );
34
+
35
+ extern void get_samples_to_coeff_np (
36
+ double *data,
37
+ int32_t dataCount,
38
+ double *pole,
39
+ int32_t poleCount
40
+ );
41
+
42
+ extern void get_samples_to_coeff_nn (
43
+ double *data,
44
+ int32_t dataCount,
45
+ double *pole,
46
+ int32_t poleCount
47
+ );
48
+
49
+ extern void get_samples_to_coeff_nw (
50
+ double *data,
51
+ int32_t dataCount,
52
+ double *pole,
53
+ int32_t poleCount
54
+ );
55
+
56
+ #endif /* spline_padding_h */
@@ -0,0 +1,275 @@
1
+ #include "spline_padding.h"
2
+
3
+ extern void get_samples_to_coeff_p (
4
+ double data[],
5
+ int32_t dataCount,
6
+ double pole[],
7
+ int32_t poleCount
8
+ ) {
9
+ if ((NULL == data) || (0 >= dataCount)) {
10
+ return;
11
+ }
12
+ if ((NULL == pole) || (0 >= poleCount)) {
13
+ return;
14
+ }
15
+ if ((0 != poleCount) && (1 != dataCount)) {
16
+ for (int q = 0; q < poleCount; q++) {
17
+ const double z = pole[q];
18
+ double sigma = data[0];
19
+ double zeta = z;
20
+ int k = 1;
21
+ while ((k < dataCount) && (0.0 != zeta)) {
22
+ sigma += zeta * data[dataCount - k];
23
+ zeta *= z;
24
+ k++;
25
+ }
26
+ data[0] = sigma / (1.0 - zeta);
27
+ for (int k = 1; k < dataCount; k++) {
28
+ data[k] += z * data[k - 1];
29
+ }
30
+ sigma = data[dataCount - 1];
31
+ zeta = z;
32
+ k = 0;
33
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
34
+ sigma += zeta * data[k];
35
+ zeta *= z;
36
+ k++;
37
+ }
38
+ const double z12 = (1.0 - z) * (1.0 - z);
39
+ data[dataCount - 1] = z12 * sigma / (1.0 - zeta);
40
+ for (int k = 1; k < dataCount; k++) {
41
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
42
+ }
43
+ }
44
+ }
45
+ } /* end get_samples_to_coeff_p */
46
+
47
+ extern void get_samples_to_coeff_n (
48
+ double data[],
49
+ int32_t dataCount,
50
+ double pole[],
51
+ int32_t poleCount
52
+ ) {
53
+ if ((NULL == data) || (0 >= dataCount)) {
54
+ return;
55
+ }
56
+ if ((NULL == pole) || (0 >= poleCount)) {
57
+ return;
58
+ }
59
+ if ((0 != poleCount) && (1 != dataCount)) {
60
+ for (int q = 0; q < poleCount; q++) {
61
+ const double z = pole[q];
62
+ double sigma1 = data[0];
63
+ double sigma2 = data[dataCount - 1];
64
+ double zeta = z;
65
+ int k = 1;
66
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
67
+ sigma1 += zeta * data[k];
68
+ sigma2 += zeta * data[dataCount - 1 - k];
69
+ zeta *= z;
70
+ k++;
71
+ }
72
+ data[0] = (sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
73
+ for (int k = 1; k < dataCount; k++) {
74
+ data[k] += z * data[k - 1];
75
+ }
76
+ const double z12 = (1.0 - z) * (1.0 - z);
77
+ data[dataCount - 1] = z12 * (z * data[dataCount - 2] + data[dataCount - 1]) / (1.0 - z * z);
78
+ for (int k = 1; k < dataCount; k++) {
79
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
80
+ }
81
+ }
82
+ }
83
+ } /* end get_samples_to_coeff_n */
84
+
85
+ extern void get_samples_to_coeff_w (
86
+ double data[],
87
+ int32_t dataCount,
88
+ double pole[],
89
+ int32_t poleCount
90
+ ) {
91
+ if ((NULL == data) || (0 >= dataCount)) {
92
+ return;
93
+ }
94
+ if ((NULL == pole) || (0 >= poleCount)) {
95
+ return;
96
+ }
97
+ if ((0 != poleCount) && (1 != dataCount)) {
98
+ for (int q = 0; q < poleCount; q++) {
99
+ const double z = pole[q];
100
+ double sigma1 = 0.0;
101
+ double sigma2 = 0.0;
102
+ double zeta = 1.0;
103
+ int k = 0;
104
+ while ((k < dataCount) && (0.0 != zeta)) {
105
+ sigma1 += zeta * data[k];
106
+ sigma2 += zeta * data[dataCount - 1 - k];
107
+ zeta *= z;
108
+ k++;
109
+ }
110
+ data[0] += z * (sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
111
+ for (int k = 1; k < dataCount; k++) {
112
+ data[k] += z * data[k - 1];
113
+ }
114
+ const double z12 = (1.0 - z) * (1.0 - z);
115
+ data[dataCount - 1] *= 1.0 - z;
116
+ for (int k = 1; k < dataCount; k++) {
117
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
118
+ }
119
+ }
120
+ }
121
+ } /* end get_samples_to_coeff_w */
122
+
123
+ extern void get_samples_to_coeff_a (
124
+ double data[],
125
+ int32_t dataCount,
126
+ double pole[],
127
+ int32_t poleCount
128
+ ) {
129
+ if ((NULL == data) || (0 >= dataCount)) {
130
+ return;
131
+ }
132
+ if ((NULL == pole) || (0 >= poleCount)) {
133
+ return;
134
+ }
135
+ if ((0 != poleCount) && (1 != dataCount)) {
136
+ for (int q = 0; q < poleCount; q++) {
137
+ const double z = pole[q];
138
+ double sigma1 = 0.0;
139
+ double sigma2 = 0.0;
140
+ double zeta = z;
141
+ int k = 1;
142
+ while ((k < (dataCount - 1)) && (0.0 != zeta)) {
143
+ sigma1 += zeta * data[k];
144
+ sigma2 += zeta * data[dataCount - 1 - k];
145
+ zeta *= z;
146
+ k++;
147
+ }
148
+ data[0] = ((data[0] - zeta * data[dataCount - 1]) * (1.0 + z) / (1.0 - z) - sigma1 + zeta * sigma2) / (1.0 - zeta * zeta);
149
+ for (int k = 1; k < dataCount; k++) {
150
+ data[k] += z * data[k - 1];
151
+ }
152
+ const double z12 = (1.0 - z) * (1.0 - z);
153
+ data[dataCount - 1] -= z * data[dataCount - 2];
154
+ for (int k = 1; k < dataCount; k++) {
155
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
156
+ }
157
+ }
158
+ }
159
+ } /* end get_samples_to_coeff_a */
160
+
161
+ extern void get_samples_to_coeff_np (
162
+ double data[],
163
+ int32_t dataCount,
164
+ double pole[],
165
+ int32_t poleCount
166
+ ) {
167
+ if ((NULL == data) || (0 >= dataCount)) {
168
+ return;
169
+ }
170
+ if ((NULL == pole) || (0 >= poleCount)) {
171
+ return;
172
+ }
173
+ for (int q = 0; q < poleCount; q++) {
174
+ const double z = pole[q];
175
+ double sigma1 = data[0];
176
+ double sigma2 = data[dataCount - 1];
177
+ double zeta = z;
178
+ int k = 1;
179
+ while ((k < dataCount) && (0.0 != zeta)) {
180
+ sigma1 += zeta * data[k];
181
+ sigma2 += zeta * data[dataCount - 1 - k];
182
+ zeta *= z;
183
+ k++;
184
+ }
185
+ const double Z0 = z / (1.0 + zeta);
186
+ sigma1 *= Z0;
187
+ sigma2 *= Z0;
188
+ data[0] -= sigma2;
189
+ for (int k = 1; k < dataCount; k++) {
190
+ data[k] += z * data[k - 1];
191
+ }
192
+ zeta *= zeta;
193
+ const double z12 = (1.0 - z) * (1.0 - z);
194
+ const double Z1 = (1.0 - z) / (1.0 + z);
195
+ data[dataCount - 1] *= (1.0 + zeta) * Z1;
196
+ data[dataCount - 1] -= (sigma2 * zeta / z + sigma1) * Z1;
197
+ for (int k = 1; k < dataCount; k++) {
198
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
199
+ }
200
+ }
201
+ } /* end get_samples_to_coeff_np */
202
+
203
+ extern void get_samples_to_coeff_nn (
204
+ double data[],
205
+ int32_t dataCount,
206
+ double pole[],
207
+ int32_t poleCount
208
+ ) {
209
+ if ((NULL == data) || (0 >= dataCount)) {
210
+ return;
211
+ }
212
+ if ((NULL == pole) || (0 >= poleCount)) {
213
+ return;
214
+ }
215
+ for (int q = 0; q < poleCount; q++) {
216
+ const double z = pole[q];
217
+ double sigma1 = 0.0;
218
+ double sigma2 = 0.0;
219
+ double zeta = 1.0;
220
+ int k = 0;
221
+ while ((k < dataCount) && (0.0 != zeta)) {
222
+ sigma1 += zeta * data[k];
223
+ sigma2 += zeta * data[dataCount - 1 - k];
224
+ zeta *= z;
225
+ k++;
226
+ }
227
+ zeta *= z;
228
+ data[0] -= (sigma1 - zeta * sigma2) * z * z / (1.0 - zeta * zeta);
229
+ for (int k = 1; k < dataCount; k++) {
230
+ data[k] += z * data[k - 1];
231
+ }
232
+ const double z12 = (1.0 - z) * (1.0 - z);
233
+ data[dataCount - 1] *= z12;
234
+ for (int k = 1; k < dataCount; k++) {
235
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
236
+ }
237
+ }
238
+ } /* end get_samples_to_coeff_nn */
239
+
240
+ extern void get_samples_to_coeff_nw (
241
+ double data[],
242
+ int32_t dataCount,
243
+ double pole[],
244
+ int32_t poleCount
245
+ ) {
246
+ if ((NULL == data) || (0 >= dataCount)) {
247
+ return;
248
+ }
249
+ if ((NULL == pole) || (0 >= poleCount)) {
250
+ return;
251
+ }
252
+ for (int q = 0; q < poleCount; q++) {
253
+ const double z = pole[q];
254
+ double sigma1 = 0.0;
255
+ double sigma2 = 0.0;
256
+ double zeta = 1.0;
257
+ int k = 0;
258
+ while ((k < dataCount) && (0.0 != zeta)) {
259
+ sigma1 += zeta * data[k];
260
+ sigma2 += zeta * data[dataCount - 1 - k];
261
+ zeta *= z;
262
+ k++;
263
+ }
264
+ data[0] -= (sigma1 - zeta * sigma2) * z / (1.0 - zeta * zeta);
265
+ for (int k = 1; k < dataCount; k++) {
266
+ data[k] += z * data[k - 1];
267
+ }
268
+ const double z12 = (1.0 - z) * (1.0 - z);
269
+ data[dataCount - 1] *= z12 / (1.0 + z);
270
+ for (int k = 1; k < dataCount; k++) {
271
+ data[dataCount - 1 - k] = z * data[dataCount - k] + z12 * data[dataCount - 1 - k];
272
+ }
273
+ }
274
+ } /* end get_samples_to_coeff_nw */
275
+