elliptic-integrals 0.1.0.0 → 0.1.0.1
raw patch · 6 files changed
+85/−74 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Math.EllipticIntegrals: carlsonRC :: Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRC :: Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRC' :: Double -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRC' :: Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRD :: Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRD :: Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRD' :: Double -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRD' :: Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRF :: Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRF :: Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRF' :: Double -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRF' :: Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRG :: Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRG :: Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRG' :: Double -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRG' :: Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRJ :: Cplx -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRJ :: Complex Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: carlsonRJ' :: Double -> Cplx -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: carlsonRJ' :: Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticE :: Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticE :: Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticE' :: Double -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticE' :: Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticF :: Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticF :: Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticF' :: Double -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticF' :: Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticPI :: Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticPI :: Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: ellipticPI' :: Double -> Cplx -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: ellipticPI' :: Double -> Complex Double -> Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: jacobiZeta :: Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: jacobiZeta :: Complex Double -> Complex Double -> Complex Double
- Math.EllipticIntegrals: jacobiZeta' :: Double -> Cplx -> Cplx -> Cplx
+ Math.EllipticIntegrals: jacobiZeta' :: Double -> Complex Double -> Complex Double -> Complex Double
Files
- CHANGELOG.md +6/−1
- README.md +6/−0
- elliptic-integrals.cabal +1/−1
- src/Math/EllipticIntegrals/Carlson.hs +42/−42
- src/Math/EllipticIntegrals/Elliptic.hs +29/−29
- src/Math/EllipticIntegrals/Internal.hs +1/−1
CHANGELOG.md view
@@ -1,4 +1,9 @@+0.1.0.1+-------+Removed a useless type alias.++ 0.1.0.0 --------* initial release+Initial release
README.md view
@@ -1,3 +1,9 @@ # elliptic-integrals +<!-- badges: start -->+[](https://github.com/stla/elliptic-integrals/actions/workflows/Stack-lts.yml)+[](https://github.com/stla/elliptic-integrals/actions/workflows/Stack-nightly.yml)+<!-- badges: end -->++ Evaluation of the Carlson elliptic integrals and the incomplete elliptic integrals with complex arguments.
elliptic-integrals.cabal view
@@ -1,5 +1,5 @@ name: elliptic-integrals-version: 0.1.0.0+version: 0.1.0.1 synopsis: Carlson Elliptic Integrals and Incomplete Elliptic Integrals description: Evaluation of the Carlson elliptic integrals and the incomplete elliptic integrals with complex arguments. homepage: https://github.com/stla/elliptic-integrals#readme
src/Math/EllipticIntegrals/Carlson.hs view
@@ -5,8 +5,8 @@ carlsonRC, carlsonRC', carlsonRG, carlsonRG') where-import Data.Complex-import Math.EllipticIntegrals.Internal+import Data.Complex ( magnitude, Complex )+import Math.EllipticIntegrals.Internal ( Cplx, toCplx, atanC ) rf_ :: Cplx -> Cplx -> Cplx -> Double -> ((Double,Double,Double), Cplx) rf_ x y z err =@@ -22,10 +22,10 @@ -- | Carlson integral RF. carlsonRF' :: Double -- ^ bound on the relative error- -> Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ -> Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRF' err x y z = if zeros > 1 then error "At most one of x, y, z can be 0"@@ -39,10 +39,10 @@ -- | Carlson integral RF. carlsonRF :: - Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRF = carlsonRF' 1e-15 rd_ :: Cplx -> Cplx -> Cplx -> Cplx -> Cplx -> Double ->@@ -61,10 +61,10 @@ -- | Carlson integral RD. carlsonRD' :: Double -- ^ bound on the relative error- -> Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ -> Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRD' err x y z = if zeros > 1 then error "At most one of x, y, z can be 0"@@ -83,10 +83,10 @@ -- | Carlson integral RD. carlsonRD ::- Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRD = carlsonRD' 1e-15 rj_ :: Cplx -> Cplx -> Cplx -> Cplx -> Cplx -> Double -> Cplx -> Int ->@@ -111,11 +111,11 @@ -- | Carlson integral RJ. carlsonRJ' :: Double -- ^ bound on the relative error- -> Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx -- ^ fourth variable - -> Cplx+ -> Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double -- ^ fourth variable + -> Complex Double carlsonRJ' err x y z p = if zeros > 1 then error "At most one of x, y, z, p can be 0"@@ -145,11 +145,11 @@ -- | Carlson integral RJ. carlsonRJ ::- Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx -- ^ fourth variable - -> Cplx+ Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double -- ^ fourth variable + -> Complex Double carlsonRJ = carlsonRJ' 1e-15 @@ -169,9 +169,9 @@ -- | Carlson integral RC. carlsonRC' :: Double -- ^ bound on the relative error- -> Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx+ -> Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double carlsonRC' err x y = if y == 0 then error "y cannot be 0"@@ -188,19 +188,19 @@ -- | Carlson integral RC. carlsonRC ::- Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx+ Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double carlsonRC = carlsonRC' 1e-15 -- | Carlson integral RG. carlsonRG' :: Double -- ^ bound on the relative error passed to `CarlsonRD'`- -> Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ -> Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRG' err x y z = if zeros > 1 then sqrt(x+y+z) / 2@@ -216,9 +216,9 @@ -- | Carlson integral RG. carlsonRG ::- Cplx -- ^ first variable- -> Cplx -- ^ second variable - -> Cplx -- ^ third variable - -> Cplx+ Complex Double -- ^ first variable+ -> Complex Double -- ^ second variable + -> Complex Double -- ^ third variable + -> Complex Double carlsonRG = carlsonRG' 1e-15
src/Math/EllipticIntegrals/Elliptic.hs view
@@ -1,15 +1,15 @@ module Math.EllipticIntegrals.Elliptic where-import Math.EllipticIntegrals.Carlson-import Data.Complex-import Math.EllipticIntegrals.Internal+import Math.EllipticIntegrals.Carlson ( carlsonRF', carlsonRD', carlsonRJ' )+import Data.Complex ( realPart, Complex )+import Math.EllipticIntegrals.Internal ( toCplx, getPhiK ) -- | Elliptic integral of the first kind. ellipticF' :: Double -- ^ bound on the relative error passed to `carlsonRF'`- -> Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ -> Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticF' err phi m | phi == 0 = toCplx 0@@ -32,17 +32,17 @@ -- | Elliptic integral of the first kind. ellipticF :: - Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticF = ellipticF' 1e-15 -- | Elliptic integral of the second kind. ellipticE' :: Double -- ^ bound on the relative error passed to `carlsonRF'` and `carlsonRD'` - -> Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ -> Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticE' err phi m | phi == 0 = toCplx 0@@ -62,18 +62,18 @@ -- | Elliptic integral of the second kind. ellipticE :: - Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticE = ellipticE' 1e-15 -- | Elliptic integral of the third kind. ellipticPI' :: Double -- ^ bound on the relative error passed to `carlsonRF'` and `carlsonRJ'` - -> Cplx -- ^ amplitude- -> Cplx -- ^ characteristic- -> Cplx -- ^ parameter- -> Cplx+ -> Complex Double -- ^ amplitude+ -> Complex Double -- ^ characteristic+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticPI' err phi n m | phi == 0 = toCplx 0@@ -97,18 +97,18 @@ -- | Elliptic integral of the third kind. ellipticPI ::- Cplx -- ^ amplitude- -> Cplx -- ^ characteristic- -> Cplx -- ^ parameter- -> Cplx+ Complex Double -- ^ amplitude+ -> Complex Double -- ^ characteristic+ -> Complex Double -- ^ parameter+ -> Complex Double ellipticPI = ellipticPI' 1e-15 -- | Jacobi zeta function. jacobiZeta' :: Double -- ^ bound on the relative error passed to `ellipticF'` and `ellipticE'` - -> Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ -> Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double jacobiZeta' err phi m = if m == 1 then@@ -122,8 +122,8 @@ -- | Jacobi zeta function. jacobiZeta ::- Cplx -- ^ amplitude- -> Cplx -- ^ parameter- -> Cplx+ Complex Double -- ^ amplitude+ -> Complex Double -- ^ parameter+ -> Complex Double jacobiZeta = jacobiZeta' 1e-15
src/Math/EllipticIntegrals/Internal.hs view
@@ -1,6 +1,6 @@ module Math.EllipticIntegrals.Internal where-import Data.Complex+import Data.Complex ( realPart, Complex(..) ) type Cplx = Complex Double