stdfeature flag: Enable to usestdinstead oflibmas the math backend.- Reduce package size.
- Fix
no_std: Updatenum-lazyto v0.4.1 andnum-traitsto v0.2.19. - Refactor the example in README.
- Add
no-stdcategory for crates.io.
- Update dependencies.
- Add DOI link to the published paper in JOSS.
- Ellip is
no_stdby default. - Deprecate
no_stdfeature flag.
Bug Fixes
- Fix integer overflow in
ellipkandellipe.
- First stable release of Ellip.
Minor Fixes
- Fix the tables in the Testing section of README.
Improvements
- Add reproducibility section in README.
- Improve testing documentation.
Tests
- Add test on macOS and Windows in the CI.
- Fix the elliprj test for macOS and Windows.
Others
- Use the 'workspace' project structure.
- All the children packages now follow the version of ellip.
- Use
cargo-releasefor the workflow.
Tests
- Update the error definition, combining symmetric relative error and absolute error.
- Modify Wolfram test data for
elliprj, preventing close symmetric parameter values in the PV domain.
Minor Fixes
- Fix 3D plots URLs.
Improvements
- Serve interactive plots through github.io.
- Automatically generate 3D plots.
Others
- Upgrade plotly to 0.13.5
- Use plotly_static instead of kaleido as it is deprecated.
Improvements
- Improve accuracy of
jacobi_zetaandheuman_lambdaby using cos for numerical stability. - Reduce crate size.
Tests
- Use exact value of machine epsilon in Wolfram scripts.
- Fix the percentile calculation for the error report.
Improvements
heuman_lambda: Improve performance.- Restructure
jacobi_zetaandheuman_lambdaintomiscmodule.
Bug Fixes
- Fix incorrect
heuman_lambdaimplementation.
Improvements
- Reduce crate size.
New Features
no_stdflag: Support no_std environment.- Parallelization available on
ellip-rayoncrate.
Bug Fixes
- Fix graphs cutting off at the border in the documentation.
Breaking Changes
BulirschConst: The trait signature changed toBulirschConst<T>.bulirschfunctions are bounded byT: Float + BulirschConst<T>trait.
Bug Fixes
ellippiinc: Fix segfault when m sin²(phi) > 1. Early catch and return error instead.- Fix error message when m > 1 for
ellipk,ellipe,ellippi, andellipd. - Fix graphs cutting off at the border in the documentation.
New Features
jacobi_zetaandjacobi_zeta_unchecked: Jacobi Zeta function (Z)heuman_lambdaandheuman_lambda_unchecked: Heuman Lambda function (Λ0).ellippiinc_bulirsch: Faster implementation ofellippiinc.unstableflag: Access features that might be changed in the future.- Add
uncheckedversion forcarlsonfunctions,bulirschfunctions,ellipeincandellippiunder theunstableflag. *_with_const: Control the precision ofbulirschfunctions usingBulirschConsttrait.DefaultPrecisionandHalfPrecisionstruct forBulirschConsttrait available underunstableflag.
Tests
- Add Wolfram test data for
f32datatype. - Add test data for
jacobi_zetaandheuman_lambda.
Bug Fixes
ellippiinc: Fix negative m domain where n < 0 and m <= n.
Improvements
- Improve performance across all functions by removing unnecessary checks.
- Improve and fix error messages.
- Add test summary and benchmark data in README.
el3: Improve accuracy.elliprj: Slightly increase accuracy of the p.v. cases.
Tests
- Add Wolfram test data for
ellipdandellipdinc.
Bug Fixes
ellipdinc: Fix incorrect result when m = -inf.el3: Fix NAN when p is small and kc = 0.
Improvements
- Improve performance of
legendrefunctions by lazy checking andel3by using array instead of Vec. - Handle special cases and edge cases (infinity, nan, etc.) for all
carlsonfunctions. - Increase test coverage.
Deprecations
- Deprecate
BulirschConst: The trait signature will be changed fromBulirschConsttoBulirschConst<T>and the trait will be relocated underunstableflag.
Bug Fixes
cel1: Fix incorrect values in negative kc cases.el3: Fix incorrect values inpm > 0.5branch.
Improvements
- Loosen the bounds of the
bulirschfunctions. - Improve the performance of the
bulirschfunctions by lazy checking. - Handle special cases and edge cases (infinity, nan, etc.) for all
bulirschfunctions. - Add special cases documentation for
bulirschfunctions. - Improve and fix documentation.
- Reduce package size.
Tests
- Increase test coverage.
- Include
bulirschfunctions in the benchmark module. - Use native Wolfram functions to generate test data for
cel1,el1, andel3. - Add error report for
cel1andcel2.
Bug Fixes
ellippiinc: Fix not returning error when n sin²φ = 1.
Improvements
- Handle special cases and edge cases (infinity, nan, etc.) for all
legendrefunctions. - Add special cases documentation for
legendrefunctions. - Increase test coverage.
- Report code coverage.
- Move examples into separate crates, reducing dev dependencies and test time.
Changes
- Use
numeric_literalsto parse floats within the functions to make the code more readable.
Improvements
- Reduce package size.
- Use custom error type
StrErrinstead of&'static strto improve readability. - Format documentation.
Improvements
- Improve documentation and add graphs and examples for each function.
- Improve the precision of the
ellipk,ellipf,ellipe,ellipeinc,ellippiinc, andelliprjfunctions. - Improve the speed of
ellippiincfunction. el3: Add error when parameter goes out of the function's range (|kc| > 0 for p < 0) and improved the error message when 1 + px² equals zero.
New Features
- Add
assert_closefunction inutilmodule.
Bug Fixes
ellipd: Fix incorrect answers for m < 0. The function also returns infinity instead of throwing error at m = 1.- Fix the domains for
ellipfandellipeinc. el3: Fix index out of bound in small el3 cases.ellippiinc: Fix infinite loop leading to stack overflow.
New Features
ellippi: Complete elliptic integral of the third kind.ellippiinc: Incomplete elliptic integral of the third kind.ellipd: Complete elliptic integral of Legendre's type.ellipdinc: Incomplete elliptic integral of Legendre's type.cel1: Complete elliptic integral of the first kind in Bulirsch's form.cel2: Complete elliptic integral of the second kind in Bulirsch's form.el1: Incomplete elliptic integral of the first kind in Bulirsch's form.el2: Incomplete elliptic integral of the second kind in Bulirsch's form.el3: Incomplete elliptic integral of the third kind in Bulirsch's form.BulirschConsttrait controls the precision of cel and el functions.- All functions now support generic Float.
Bug Fixes
elliprf: Fix incorrect result for RF(x,x,0).elliprjandelliprc: Fix losing precision due to ln(1+x).ellipe: Fix incorrect result during internal condition |t| > 10.
Changes
- Add dependency
num-traitsandnum-lazy.
Improvements
- Reduce crate size by removing the logo and test data from the source. To perform full test, download the test data from the repository.
New Features
cel: Bulirsch's general complete elliptic integral.elliprg: Symmetric elliptic integral of the second kind.elliprj: Symmetric elliptic integral of the third kind.
Improvements
elliprf: Add special cases handling to improve performance and accuracy.elliprd: Use Boost Math implementation to improve accuracy.ellipe: Explicitly make internal functions inline.
Changes
- Change error messages in
ellipk,ellipf,ellipe, andellipeinc, to describe without mathematical notations. - Split error message in
elliprd.
Bug Fixes
- Fix domain error message in
elliprd.
Others
- Add Ellip logo
- Add links to references in the documentations.
Bug Fixes
- Fix
ellipelogic in negative m cases.
Others
- Update README to reflect the crate's functionalities.
- Add CHANGELOG.
New Features
ellipf: Incomplete elliptic integral of the first kind.ellipeinc: Incomplete elliptic integral of the second kind.ellipk: Complete elliptic integral of the first kind.ellipe: Complete elliptic integral of the second kind.elliprf: Symmetric elliptic integral of the first kind.elliprd: Degenerate elliptic integral of the third kind.elliprc: Degenerate elliptic integral of RF.