splinekit 0.2.1__tar.gz → 0.2.2__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.2}/PKG-INFO +12 -1
  2. {splinekit-0.2.1 → splinekit-0.2.2}/README.md +11 -0
  3. splinekit-0.2.2/dev/ANSI-C/spline_padding_cmake/CMakeLists.txt +15 -0
  4. splinekit-0.2.2/dev/ANSI-C/spline_padding_cmake/spline_padding.c +275 -0
  5. splinekit-0.2.2/dev/ANSI-C/spline_padding_cmake/spline_padding.h +56 -0
  6. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/libspline_padding.dylib +0 -0
  7. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.c +275 -0
  8. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.h +56 -0
  9. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.pbxproj +295 -0
  10. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  11. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/xcuserdata/pthevena.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  12. splinekit-0.2.2/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/xcuserdata/pthevena.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  13. splinekit-0.2.2/dev/Jupyter/bspline_annihilate.ipynb +133 -0
  14. splinekit-0.2.2/dev/Jupyter/bspline_cardinal.ipynb +108 -0
  15. splinekit-0.2.2/dev/Jupyter/bspline_convolve_mono.ipynb +106 -0
  16. splinekit-0.2.2/dev/Jupyter/bspline_dual.ipynb +110 -0
  17. splinekit-0.2.2/dev/Jupyter/bspline_dual_property.ipynb +137 -0
  18. splinekit-0.2.2/dev/Jupyter/bspline_gauss_exo.ipynb +147 -0
  19. splinekit-0.2.2/dev/Jupyter/bspline_hello.ipynb +112 -0
  20. splinekit-0.2.2/dev/Jupyter/bspline_hello_grad.ipynb +113 -0
  21. splinekit-0.2.2/dev/Jupyter/bspline_hello_integral.ipynb +117 -0
  22. splinekit-0.2.2/dev/Jupyter/bspline_inv.ipynb +111 -0
  23. splinekit-0.2.2/dev/Jupyter/bspline_m_scale.ipynb +125 -0
  24. splinekit-0.2.2/dev/Jupyter/bspline_member.ipynb +109 -0
  25. splinekit-0.2.2/dev/Jupyter/bspline_member_diff.ipynb +140 -0
  26. splinekit-0.2.2/dev/Jupyter/bspline_member_integral.ipynb +114 -0
  27. splinekit-0.2.2/dev/Jupyter/bspline_numeric_stability.ipynb +513 -0
  28. splinekit-0.2.2/dev/Jupyter/bspline_ortho.ipynb +108 -0
  29. splinekit-0.2.2/dev/Jupyter/bspline_ortho_property.ipynb +133 -0
  30. splinekit-0.2.2/dev/Jupyter/bspline_partition_mono.ipynb +104 -0
  31. splinekit-0.2.2/dev/Jupyter/bspline_periodic_inv.ipynb +131 -0
  32. splinekit-0.2.2/dev/Jupyter/bspline_poles.ipynb +115 -0
  33. splinekit-0.2.2/dev/Jupyter/bspline_sinc.ipynb +137 -0
  34. splinekit-0.2.2/dev/Jupyter/bspline_spline_poly.ipynb +103 -0
  35. splinekit-0.2.2/dev/Jupyter/bspline_trigo_exo.ipynb +227 -0
  36. splinekit-0.2.2/dev/Jupyter/bspline_vs_cos.ipynb +141 -0
  37. splinekit-0.2.2/dev/Jupyter/bspline_vs_erf.ipynb +130 -0
  38. splinekit-0.2.2/dev/Jupyter/bspline_vs_exp.ipynb +154 -0
  39. splinekit-0.2.2/dev/Jupyter/bspline_vs_pi_as_sum.ipynb +118 -0
  40. splinekit-0.2.2/dev/Jupyter/bspline_vs_pi_at0.ipynb +121 -0
  41. splinekit-0.2.2/dev/Jupyter/bspline_vs_sin.ipynb +150 -0
  42. splinekit-0.2.2/dev/Jupyter/padding_data.ipynb +254 -0
  43. splinekit-0.2.2/dev/Jupyter/padding_speed.ipynb +219 -0
  44. splinekit-0.2.2/dev/Jupyter/spline_approximation.ipynb +162 -0
  45. splinekit-0.2.2/dev/Jupyter/spline_at_array.ipynb +365 -0
  46. splinekit-0.2.2/dev/Jupyter/spline_at_scalar.ipynb +1107 -0
  47. splinekit-0.2.2/dev/Jupyter/spline_bounds.ipynb +138 -0
  48. splinekit-0.2.2/dev/Jupyter/spline_evaluation_speed.ipynb +158 -0
  49. splinekit-0.2.2/dev/Jupyter/spline_interpolation.ipynb +159 -0
  50. splinekit-0.2.2/dev/Jupyter/spline_polynomials.ipynb +153 -0
  51. splinekit-0.2.2/dev/Jupyter/spline_random_1d.ipynb +170 -0
  52. splinekit-0.2.2/dev/Jupyter/spline_random_2d.ipynb +376 -0
  53. splinekit-0.2.2/dev/Wolfram/Bspline Poles.nb +2047 -0
  54. splinekit-0.2.2/dev/Wolfram/IntervalChecks.nb +2610 -0
  55. splinekit-0.2.2/dev/Wolfram/PeriodicSplinesChecks.nb +11404 -0
  56. splinekit-0.2.2/dev/Wolfram/SplinePaddingChecks.nb +7539 -0
  57. splinekit-0.2.2/dev/Wolfram/Test BSplines.nb +3205 -0
  58. splinekit-0.2.2/dev/Wolfram/Test PeriodicNonuniformPiecewise.nb +453 -0
  59. splinekit-0.2.2/dev/Wolfram/Test PeriodicSpline1D.nb +14686 -0
  60. splinekit-0.2.2/dev/Wolfram/Test SplinePadding.nb +3861 -0
  61. splinekit-0.2.2/dev/Wolfram/Test SplineUtilities.nb +2571 -0
  62. splinekit-0.2.2/dev/Wolfram/Verify doc.nb +3658 -0
  63. splinekit-0.2.2/dev/Wolfram/rescued Test SplinePadding.nb +3935 -0
  64. splinekit-0.2.2/dev/cpJupyter.sh +6 -0
  65. splinekit-0.2.2/dev/gzJupyter.sh +10 -0
  66. splinekit-0.2.2/dev/sk.numbers +0 -0
  67. splinekit-0.2.2/dev/zipJupyter.sh +11 -0
  68. splinekit-0.2.2/docs/bases/01_bases.rst +12 -0
  69. splinekit-0.2.2/docs/bases/index.rst +14 -0
  70. splinekit-0.2.2/docs/bsplines/01_bsplines.rst +12 -0
  71. splinekit-0.2.2/docs/bsplines/index.rst +14 -0
  72. splinekit-0.2.2/docs/demos/bspline/bspline_bases.rst +219 -0
  73. splinekit-0.2.2/docs/demos/bspline/bspline_inverse.rst +59 -0
  74. splinekit-0.2.2/docs/demos/bspline/bspline_m_scale.rst +23 -0
  75. splinekit-0.2.2/docs/demos/bspline/bspline_members.rst +38 -0
  76. splinekit-0.2.2/docs/demos/bspline/bspline_numeric_stability.ipynb.gz +0 -0
  77. splinekit-0.2.2/docs/demos/bspline/bspline_poles.rst +115 -0
  78. splinekit-0.2.2/docs/demos/bspline/bspline_stability.rst +264 -0
  79. splinekit-0.2.2/docs/demos/bspline/bspline_vs_pi.rst +36 -0
  80. splinekit-0.2.2/docs/demos/bspline/hello_bspline.rst +38 -0
  81. splinekit-0.2.2/docs/demos/bspline/index.rst +31 -0
  82. splinekit-0.2.2/docs/demos/bspline/spline_engineer_func.rst +103 -0
  83. splinekit-0.2.2/docs/demos/bspline/spline_vs_poly.rst +108 -0
  84. splinekit-0.2.2/docs/demos/index.rst +24 -0
  85. splinekit-0.2.2/docs/demos/padding/index.rst +22 -0
  86. splinekit-0.2.2/docs/demos/padding/padding.rst +341 -0
  87. splinekit-0.2.2/docs/demos/padding/padding_speed.ipynb.gz +0 -0
  88. splinekit-0.2.2/docs/demos/spline1d/bounds.rst +112 -0
  89. splinekit-0.2.2/docs/demos/spline1d/constructors.rst +68 -0
  90. splinekit-0.2.2/docs/demos/spline1d/evaluation.rst +222 -0
  91. splinekit-0.2.2/docs/demos/spline1d/index.rst +27 -0
  92. splinekit-0.2.2/docs/demos/spline1d/polynomials.rst +138 -0
  93. splinekit-0.2.2/docs/demos/spline1d/random1d.rst +28 -0
  94. splinekit-0.2.2/docs/demos/spline1d/random2d.rst +43 -0
  95. splinekit-0.2.2/docs/demos/spline1d/spline_evaluation_speed.ipynb.gz +0 -0
  96. {splinekit-0.2.1 → splinekit-0.2.2}/docs/glossary/glossary-numbers.rst +8 -8
  97. {splinekit-0.2.1 → splinekit-0.2.2}/docs/glossary/glossary-polynomials.rst +9 -9
  98. {splinekit-0.2.1 → splinekit-0.2.2}/docs/glossary/glossary-splines.rst +10 -10
  99. {splinekit-0.2.1 → splinekit-0.2.2}/docs/glossary/glossary-terminology.rst +10 -10
  100. splinekit-0.2.2/docs/glossary/index.rst +13 -0
  101. splinekit-0.2.2/docs/index.rst +46 -0
  102. splinekit-0.2.2/docs/installation/index.rst +5 -0
  103. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/bounded/01_bounded.rst +7 -7
  104. splinekit-0.2.2/docs/interval/bounded/02_open.rst +12 -0
  105. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/bounded/03_open_closed.rst +7 -7
  106. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/bounded/04_closed.rst +7 -7
  107. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/bounded/05_closed_open.rst +7 -7
  108. splinekit-0.2.2/docs/interval/bounded/index.rst +18 -0
  109. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/degenerate/01_degenerate.rst +7 -7
  110. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/degenerate/02_singleton.rst +7 -7
  111. splinekit-0.2.2/docs/interval/degenerate/index.rst +15 -0
  112. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/01_half_bounded.rst +7 -7
  113. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/02_above.rst +7 -7
  114. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/03_not_below.rst +7 -7
  115. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/04_not_above.rst +7 -7
  116. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/05_below.rst +7 -7
  117. splinekit-0.2.2/docs/interval/half_bounded/index.rst +18 -0
  118. splinekit-0.2.2/docs/interval/index.rst +14 -0
  119. splinekit-0.2.2/docs/interval/interval/01_interval.rst +12 -0
  120. splinekit-0.2.2/docs/interval/interval/index.rst +15 -0
  121. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/universal/01_universal.rst +7 -7
  122. splinekit-0.2.2/docs/interval/universal/02_empty.rst +12 -0
  123. splinekit-0.2.2/docs/interval/universal/03_rr.rst +12 -0
  124. splinekit-0.2.2/docs/interval/universal/index.rst +16 -0
  125. splinekit-0.2.2/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +12 -0
  126. splinekit-0.2.2/docs/periodic_nonuniform_piecewise/index.rst +14 -0
  127. splinekit-0.2.2/docs/periodic_spline_1d/01_periodic_spline_1d.rst +12 -0
  128. splinekit-0.2.2/docs/periodic_spline_1d/index.rst +17 -0
  129. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/matplotlib-color.rst +3 -2
  130. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/matplotlib-linestyle.rst +3 -2
  131. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/matplotlib-marker.rst +28 -27
  132. splinekit-0.2.2/docs/spline_padding/01_spline_padding.rst +12 -0
  133. splinekit-0.2.2/docs/spline_padding/index.rst +16 -0
  134. splinekit-0.2.2/docs/spline_utilities/01_spline_utilities.rst +12 -0
  135. splinekit-0.2.2/docs/spline_utilities/index.rst +16 -0
  136. {splinekit-0.2.1 → splinekit-0.2.2}/pyproject.toml +1 -1
  137. splinekit-0.2.2/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.2}/.github/workflows/deploy-docs.yml +0 -0
  184. {splinekit-0.2.1 → splinekit-0.2.2}/.github/workflows/release.yml +0 -0
  185. {splinekit-0.2.1 → splinekit-0.2.2}/.github/workflows/test.yml +0 -0
  186. {splinekit-0.2.1 → splinekit-0.2.2}/.gitignore +0 -0
  187. {splinekit-0.2.1 → splinekit-0.2.2}/.jupyterlite.doit.db +0 -0
  188. {splinekit-0.2.1 → splinekit-0.2.2}/.virtual_documents/docs/tutorial/dummy.ipynb +0 -0
  189. {splinekit-0.2.1 → splinekit-0.2.2}/CMakeLists.txt +0 -0
  190. {splinekit-0.2.1 → splinekit-0.2.2}/LICENSE +0 -0
  191. {splinekit-0.2.1 → splinekit-0.2.2}/_output/api/translations/all.json +0 -0
  192. {splinekit-0.2.1 → splinekit-0.2.2}/_output/api/translations/en.json +0 -0
  193. {splinekit-0.2.1 → splinekit-0.2.2}/_output/api/workspaces/all.json +0 -0
  194. {splinekit-0.2.1 → splinekit-0.2.2}/_output/bootstrap.js +0 -0
  195. {splinekit-0.2.1 → splinekit-0.2.2}/_output/config-utils.js +0 -0
  196. {splinekit-0.2.1 → splinekit-0.2.2}/_output/consoles/favicon.ico +0 -0
  197. {splinekit-0.2.1 → splinekit-0.2.2}/_output/consoles/index.html +0 -0
  198. {splinekit-0.2.1 → splinekit-0.2.2}/_output/consoles/jupyter-lite.ipynb +0 -0
  199. {splinekit-0.2.1 → splinekit-0.2.2}/_output/consoles/jupyter-lite.json +0 -0
  200. {splinekit-0.2.1 → splinekit-0.2.2}/_output/consoles/package.json +0 -0
  201. {splinekit-0.2.1 → splinekit-0.2.2}/_output/doc/tree/index.html +0 -0
  202. {splinekit-0.2.1 → splinekit-0.2.2}/_output/doc/workspaces/index.html +0 -0
  203. {splinekit-0.2.1 → splinekit-0.2.2}/_output/edit/favicon.ico +0 -0
  204. {splinekit-0.2.1 → splinekit-0.2.2}/_output/edit/index.html +0 -0
  205. {splinekit-0.2.1 → splinekit-0.2.2}/_output/edit/jupyter-lite.ipynb +0 -0
  206. {splinekit-0.2.1 → splinekit-0.2.2}/_output/edit/jupyter-lite.json +0 -0
  207. {splinekit-0.2.1 → splinekit-0.2.2}/_output/edit/package.json +0 -0
  208. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/install.json +0 -0
  209. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/package.json +0 -0
  210. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/package.json.orig +0 -0
  211. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/plugin.json +0 -0
  212. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js +0 -0
  213. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js.LICENSE.txt +0 -0
  214. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/509.d51a8122d1920ac82323.js +0 -0
  215. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/720.094c38d70b1dec0ceea7.js +0 -0
  216. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/remoteEntry.94495aac41d2fef6ad41.js +0 -0
  217. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/style.js +0 -0
  218. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab-jupytext/static/third-party-licenses.json +0 -0
  219. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/install.json +0 -0
  220. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/package.json +0 -0
  221. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/static/568.1e2faa2ba0bbe59c4780.js +0 -0
  222. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/static/747.67662283a5707eeb4d4c.js +0 -0
  223. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/static/remoteEntry.5cbb9d2323598fbda535.js +0 -0
  224. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/static/style.js +0 -0
  225. {splinekit-0.2.1 → splinekit-0.2.2}/_output/extensions/jupyterlab_pygments/static/third-party-licenses.json +0 -0
  226. {splinekit-0.2.1 → splinekit-0.2.2}/_output/icon-120x120.png +0 -0
  227. {splinekit-0.2.1 → splinekit-0.2.2}/_output/icon-512x512.png +0 -0
  228. {splinekit-0.2.1 → splinekit-0.2.2}/_output/index.html +0 -0
  229. {splinekit-0.2.1 → splinekit-0.2.2}/_output/jupyter-lite.ipynb +0 -0
  230. {splinekit-0.2.1 → splinekit-0.2.2}/_output/jupyter-lite.json +0 -0
  231. {splinekit-0.2.1 → splinekit-0.2.2}/_output/jupyterlite.schema.v0.json +0 -0
  232. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/favicon.ico +0 -0
  233. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/index.html +0 -0
  234. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/jupyter-lite.ipynb +0 -0
  235. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/jupyter-lite.json +0 -0
  236. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/package.json +0 -0
  237. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/tree/index.html +0 -0
  238. {splinekit-0.2.1 → splinekit-0.2.2}/_output/lab/workspaces/index.html +0 -0
  239. {splinekit-0.2.1 → splinekit-0.2.2}/_output/manifest.webmanifest +0 -0
  240. {splinekit-0.2.1 → splinekit-0.2.2}/_output/notebooks/favicon.ico +0 -0
  241. {splinekit-0.2.1 → splinekit-0.2.2}/_output/notebooks/index.html +0 -0
  242. {splinekit-0.2.1 → splinekit-0.2.2}/_output/notebooks/jupyter-lite.ipynb +0 -0
  243. {splinekit-0.2.1 → splinekit-0.2.2}/_output/notebooks/jupyter-lite.json +0 -0
  244. {splinekit-0.2.1 → splinekit-0.2.2}/_output/notebooks/package.json +0 -0
  245. {splinekit-0.2.1 → splinekit-0.2.2}/_output/package.json +0 -0
  246. {splinekit-0.2.1 → splinekit-0.2.2}/_output/repl/index.html +0 -0
  247. {splinekit-0.2.1 → splinekit-0.2.2}/_output/repl/jupyter-lite.ipynb +0 -0
  248. {splinekit-0.2.1 → splinekit-0.2.2}/_output/repl/jupyter-lite.json +0 -0
  249. {splinekit-0.2.1 → splinekit-0.2.2}/_output/repl/package.json +0 -0
  250. {splinekit-0.2.1 → splinekit-0.2.2}/_output/service-worker.js +0 -0
  251. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-busy-1.ico +0 -0
  252. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-busy-2.ico +0 -0
  253. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-busy-3.ico +0 -0
  254. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-file.ico +0 -0
  255. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-notebook.ico +0 -0
  256. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon-terminal.ico +0 -0
  257. {splinekit-0.2.1 → splinekit-0.2.2}/_output/static/favicons/favicon.ico +0 -0
  258. {splinekit-0.2.1 → splinekit-0.2.2}/_output/tree/favicon.ico +0 -0
  259. {splinekit-0.2.1 → splinekit-0.2.2}/_output/tree/index.html +0 -0
  260. {splinekit-0.2.1 → splinekit-0.2.2}/_output/tree/jupyter-lite.ipynb +0 -0
  261. {splinekit-0.2.1 → splinekit-0.2.2}/_output/tree/jupyter-lite.json +0 -0
  262. {splinekit-0.2.1 → splinekit-0.2.2}/_output/tree/package.json +0 -0
  263. {splinekit-0.2.1 → splinekit-0.2.2}/ansi_c/spline_padding/src/spline_padding.c +0 -0
  264. {splinekit-0.2.1 → splinekit-0.2.2}/ansi_c/spline_padding/src/spline_padding.h +0 -0
  265. {splinekit-0.2.1 → splinekit-0.2.2}/docs/.jupyterlite.doit.db +0 -0
  266. {splinekit-0.2.1 → splinekit-0.2.2}/docs/_static/custom.css +0 -0
  267. {splinekit-0.2.1 → splinekit-0.2.2}/docs/bases/noxfile.py +0 -0
  268. {splinekit-0.2.1 → splinekit-0.2.2}/docs/bsplines/noxfile.py +0 -0
  269. {splinekit-0.2.1 → splinekit-0.2.2}/docs/conf.py +0 -0
  270. {splinekit-0.2.1 → splinekit-0.2.2}/docs/environment.yml +0 -0
  271. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/bounded/noxfile.py +0 -0
  272. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/degenerate/noxfile.py +0 -0
  273. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/half_bounded/noxfile.py +0 -0
  274. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/interval/noxfile.py +0 -0
  275. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/noxfile.py +0 -0
  276. {splinekit-0.2.1 → splinekit-0.2.2}/docs/interval/universal/noxfile.py +0 -0
  277. {splinekit-0.2.1/docs/jupyter_labs → splinekit-0.2.2/docs}/noxfile.py +0 -0
  278. {splinekit-0.2.1/docs → splinekit-0.2.2/docs/periodic_nonuniform_piecewise}/noxfile.py +0 -0
  279. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m00.png +0 -0
  280. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m01.png +0 -0
  281. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m02.png +0 -0
  282. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m03.png +0 -0
  283. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m04.png +0 -0
  284. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m05.png +0 -0
  285. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m06.png +0 -0
  286. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m07.png +0 -0
  287. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m08.png +0 -0
  288. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m09.png +0 -0
  289. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m10.png +0 -0
  290. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m11.png +0 -0
  291. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m12.png +0 -0
  292. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m13.png +0 -0
  293. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m14.png +0 -0
  294. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m15.png +0 -0
  295. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m16.png +0 -0
  296. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m17.png +0 -0
  297. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m18.png +0 -0
  298. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m19.png +0 -0
  299. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m20.png +0 -0
  300. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m21.png +0 -0
  301. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m22.png +0 -0
  302. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m23.png +0 -0
  303. {splinekit-0.2.1 → splinekit-0.2.2}/docs/periodic_spline_1d/m24.png +0 -0
  304. {splinekit-0.2.1/docs/periodic_nonuniform_piecewise → splinekit-0.2.2/docs/periodic_spline_1d}/noxfile.py +0 -0
  305. {splinekit-0.2.1/docs/periodic_spline_1d → splinekit-0.2.2/docs/spline_padding}/noxfile.py +0 -0
  306. {splinekit-0.2.1/docs/spline_padding → splinekit-0.2.2/docs/spline_utilities}/noxfile.py +0 -0
  307. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/__init__.py +0 -0
  308. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/bases.py +0 -0
  309. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/bsplines.py +0 -0
  310. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/__init__.py +0 -0
  311. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/_known_intervals.py +0 -0
  312. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/above.py +0 -0
  313. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/below.py +0 -0
  314. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/bounded.py +0 -0
  315. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/closed.py +0 -0
  316. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/closed_open.py +0 -0
  317. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/degenerate.py +0 -0
  318. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/empty.py +0 -0
  319. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/half_bounded.py +0 -0
  320. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/interval.py +0 -0
  321. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/mypy.ini +0 -0
  322. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/not_above.py +0 -0
  323. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/not_below.py +0 -0
  324. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/open.py +0 -0
  325. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/open_closed.py +0 -0
  326. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/rr.py +0 -0
  327. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/singleton.py +0 -0
  328. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/interval/universal.py +0 -0
  329. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/mypy.ini +0 -0
  330. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/periodic_nonuniform_piecewise.py +0 -0
  331. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/periodic_spline_1d.py +0 -0
  332. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/spline_padding.py +0 -0
  333. {splinekit-0.2.1 → splinekit-0.2.2}/src/splinekit/spline_utilities.py +0 -0
  334. {splinekit-0.2.1 → splinekit-0.2.2}/tests/test_bsplines.py +0 -0
  335. {splinekit-0.2.1 → splinekit-0.2.2}/tests/test_periodic_nonuniform_piecewise.py +0 -0
  336. {splinekit-0.2.1 → splinekit-0.2.2}/tests/test_periodic_spline_1d.py +0 -0
  337. {splinekit-0.2.1 → splinekit-0.2.2}/tests/test_spline_padding.py +0 -0
  338. {splinekit-0.2.1 → splinekit-0.2.2}/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.2
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>
@@ -109,3 +109,14 @@ Install `splinekit` development environment in editable mode
109
109
  ```shell
110
110
  pip install -e .[dev]
111
111
  ```
112
+
113
+ ## Release Notes
114
+
115
+ ### 0.1.0
116
+ First stable version. Pure Python.
117
+
118
+ ### 0.2.1
119
+ Same API as 0.1.0. Ansi-C dynamic library.
120
+
121
+ ### 0.2.2
122
+ Some demos added
@@ -58,3 +58,14 @@ Install `splinekit` development environment in editable mode
58
58
  ```shell
59
59
  pip install -e .[dev]
60
60
  ```
61
+
62
+ ## Release Notes
63
+
64
+ ### 0.1.0
65
+ First stable version. Pure Python.
66
+
67
+ ### 0.2.1
68
+ Same API as 0.1.0. Ansi-C dynamic library.
69
+
70
+ ### 0.2.2
71
+ 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
+
@@ -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 */