TYoshimura.DoubleDouble
3.1.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package TYoshimura.DoubleDouble --version 3.1.0
NuGet\Install-Package TYoshimura.DoubleDouble -Version 3.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TYoshimura.DoubleDouble" Version="3.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TYoshimura.DoubleDouble --version 3.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: TYoshimura.DoubleDouble, 3.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install TYoshimura.DoubleDouble as a Cake Addin #addin nuget:?package=TYoshimura.DoubleDouble&version=3.1.0 // Install TYoshimura.DoubleDouble as a Cake Tool #tool nuget:?package=TYoshimura.DoubleDouble&version=3.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
DoubleDouble
Double-Double Arithmetic and Special Function Implements
Requirement
.NET 7.0
Install
More Precision ?
Type
type | mantissa bits | significant digits |
---|---|---|
ddouble | 104 | 30 |
stat | bin | dec |
---|---|---|
MaxValue | 2^1024 | 1.79769e308 |
Normal MinValue | 2^-968 | 4.00833e-292 |
Subnormal MinValue | 2^-1074 | 4.94066e-324 |
Functions
function | domain | mantissa error bits | note |
---|---|---|---|
ddouble.Sqrt(x) | [0,+inf) | 2 | |
ddouble.Cbrt(x) | (-inf,+inf) | 2 | |
ddouble.RootN(x, n) | (-inf,+inf) | 3 | |
ddouble.Log2(x) | (0,+inf) | 2 | |
ddouble.Log(x), ddouble.Log(x, b) | (0,+inf) | 3 | |
ddouble.Log10(x) | (0,+inf) | 3 | |
ddouble.Log1p(x) | (-1,+inf) | 3 | log(1+x) |
ddouble.Pow2(x) | (-inf,+inf) | 1 | |
ddouble.Pow2m1(x) | (-inf,+inf) | 2 | pow2(x)-1 |
ddouble.Pow(x, y) | (-inf,+inf) | 2 | |
ddouble.Pow10(x) | (-inf,+inf) | 2 | |
ddouble.Exp(x) | (-inf,+inf) | 2 | |
ddouble.Expm1(x) | (-inf,+inf) | 2 | exp(x)-1 |
ddouble.Sin(x) | (-inf,+inf) | 2 | |
ddouble.Cos(x) | (-inf,+inf) | 2 | |
ddouble.Tan(x) | (-inf,+inf) | 3 | |
ddouble.SinPI(x) | (-inf,+inf) | 1 | sin(πx) |
ddouble.CosPI(x) | (-inf,+inf) | 1 | cos(πx) |
ddouble.TanPI(x) | (-inf,+inf) | 2 | tan(πx) |
ddouble.Sinh(x) | (-inf,+inf) | 2 | |
ddouble.Cosh(x) | (-inf,+inf) | 2 | |
ddouble.Tanh(x) | (-inf,+inf) | 2 | |
ddouble.Asin(x) | [-1,1] | 2 | Accuracy deteriorates near x=-1,1. |
ddouble.Acos(x) | [-1,1] | 2 | Accuracy deteriorates near x=-1,1. |
ddouble.Atan(x) | (-inf,+inf) | 2 | |
ddouble.Atan2(y, x) | (-inf,+inf) | 2 | |
ddouble.Arsinh(x) | (-inf,+inf) | 2 | |
ddouble.Arcosh(x) | [1,+inf) | 2 | |
ddouble.Artanh(x) | (-1,1) | 4 | Accuracy deteriorates near x=-1,1. |
ddouble.Sinc(x, normalized) | (-inf,+inf) | 2 | normalized: x → πx |
ddouble.Sinhc(x) | (-inf,+inf) | 3 | |
ddouble.Gamma(x) | (-inf,+inf) | 2 | Accuracy deteriorates near non-positive intergers. If x is Natual number lass than 35, an exact integer value is returned. |
ddouble.LogGamma(x) | (0,+inf) | 4 | |
ddouble.Digamma(x) | (-inf,+inf) | 4 | Near the positive root, polynomial interpolation is used. |
ddouble.Polygamma(n, x) | (-inf,+inf) | 4 | Accuracy deteriorates near non-positive intergers. n ≤ 16 |
ddouble.InverseGamma(x) | [sqrt(π)/2,+inf) | 2 | gamma^-1(x) |
ddouble.RcpGamma(x) | (-inf,+inf) | 3 | 1/gamma(x) |
ddouble.LowerIncompleteGamma(nu, x) | [0,+inf) | 4 | nu ≤ 171.625 |
ddouble.UpperIncompleteGamma(nu, x) | [0,+inf) | 4 | nu ≤ 171.625 |
ddouble.LowerIncompleteGammaRegularized(nu, x) | [0,+inf) | 4 | nu ≤ 8192 |
ddouble.UpperIncompleteGammaRegularized(nu, x) | [0,+inf) | 4 | nu ≤ 8192 |
ddouble.InverseLowerIncompleteGamma(nu, x) | [0,1] | 8 | nu ≤ 8192 |
ddouble.InverseUpperIncompleteGamma(nu, x) | [0,1] | 8 | nu ≤ 8192 |
ddouble.Beta(a, b) | [0,+inf) | 4 | |
ddouble.LogBeta(a, b) | [0,+inf) | 4 | |
ddouble.IncompleteBeta(x, a, b) | [0,1] | 4 | Accuracy decreases when the radio of a,b is too large. a+b-max(a,b) ≤ 512 |
ddouble.IncompleteBetaRegularized(x, a, b) | [0,1] | 4 | Accuracy decreases when the radio of a,b is too large. a+b-max(a,b) ≤ 8192 |
ddouble.InverseIncompleteBeta(x, a, b) | [0,1] | 8 | Accuracy decreases when the radio of a,b is too large. a+b-max(a,b) ≤ 8192 |
ddouble.Erf(x) | (-inf,+inf) | 3 | |
ddouble.Erfc(x) | (-inf,+inf) | 3 | |
ddouble.InverseErf(x) | (-1,1) | 3 | |
ddouble.InverseErfc(x) | (0,2) | 3 | |
ddouble.Erfcx(x) | (-inf,+inf) | 3 | |
ddouble.Erfi(x) | (-inf,+inf) | 4 | |
ddouble.DawsonF(x) | (-inf,+inf) | 4 | |
ddouble.BesselJ(nu, x) | [0,+inf) | 8 | Accuracy deteriorates near root. abs(nu) ≤ 16 |
ddouble.BesselY(nu, x) | [0,+inf) | 8 | Accuracy deteriorates near the root and at non-interger nu very close (< 2^-25) to the integer. abs(nu) ≤ 16 |
ddouble.BesselI(nu, x) | [0,+inf) | 6 | Accuracy deteriorates near root. abs(nu) ≤ 16 |
ddouble.BesselK(nu, x) | [0,+inf) | 6 | Accuracy deteriorates with non-interger nu very close (< 2^-25) to an integer. abs(nu) ≤ 16 |
ddouble.StruveH(n, x) | (-inf,+inf) | 4 | 0 ≤ n ≤ 8 |
ddouble.StruveK(n, x) | [0,+inf) | 4 | 0 ≤ n ≤ 8 |
ddouble.StruveL(n, x) | (-inf,+inf) | 4 | 0 ≤ n ≤ 8 |
ddouble.StruveM(n, x) | [0,+inf) | 4 | 0 ≤ n ≤ 8 |
ddouble.EllipticK(m) | [0,1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.EllipticE(m) | [0,1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.EllipticPi(n, m) | [0,1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.EllipticK(x, m) | [0,2pi] | 4 | k: elliptic modulus, m=k^2 |
ddouble.EllipticE(x, m) | [0,2pi] | 4 | k: elliptic modulus, m=k^2, incomplete elliptic integral |
ddouble.EllipticPi(n, x, m) | [0,2pi] | 4 | k: elliptic modulus, m=k^2 Argument order follows wolfram. incomplete elliptic integral |
ddouble.EllipticTheta(a, x, q) | (-inf,+inf) | 4 | a=1...4, q ≤ 0.995, incomplete elliptic integral |
ddouble.KeplerE(m, e, centered) | (-inf,+inf) | 6 | inverse kepler's equation, e(eccentricity) ≤ 256 |
ddouble.Agm(a, b) | [0,+inf) | 2 | |
ddouble.FresnelC(x) | (-inf,+inf) | 4 | |
ddouble.FresnelS(x) | (-inf,+inf) | 4 | |
ddouble.FresnelF(x) | (-inf,+inf) | 4 | |
ddouble.FresnelG(x) | (-inf,+inf) | 4 | |
ddouble.Ei(x) | (-inf,+inf) | 4 | exponential integral |
ddouble.Ein(x) | (-inf,+inf) | 4 | complementary exponential integral |
ddouble.Li(x) | [0,+inf) | 5 | logarithmic integral li(x)=ei(log(x)) |
ddouble.Si(x, limit_zero) | (-inf,+inf) | 4 | sin integral, limit_zero=true: si(x) |
ddouble.Ci(x) | [0,+inf) | 4 | cos integral |
ddouble.Shi(x) | (-inf,+inf) | 5 | hyperbolic sin integral |
ddouble.Chi(x) | [0,+inf) | 5 | hyperbolic cos integral |
ddouble.Clausen(x, normalized) | (-inf,+inf) | 3 | Clausen function of order 2, Cl_2(x), normalized: x → πx |
ddouble.BarnesG(x) | (-inf,+inf) | 3 | |
ddouble.LogBarnesG(x) | (0,+inf) | 3 | |
ddouble.LambertW(x) | [-1/e,+inf) | 4 | |
ddouble.AiryAi(x) | (-inf,+inf) | 5 | Accuracy deteriorates near root. |
ddouble.AiryBi(x) | (-inf,+inf) | 5 | Accuracy deteriorates near root. |
ddouble.ScorerGi(x) | (-inf,+inf) | 5 | Accuracy deteriorates near root. |
ddouble.ScorerHi(x) | (-inf,+inf) | 4 | |
ddouble.JacobiSn(x, m) | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiCn(x, m) | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiDn(x, m) | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiAm(x, m) | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiArcSn(x, m) | [-1,+1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiArcCn(x, m) | [-1,+1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.JacobiArcDn(x, m) | [0,1] | 4 | k: elliptic modulus, m=k^2 |
ddouble.CarlsonRD(x, y, z) | [0,+inf) | 4 | |
ddouble.CarlsonRC(x, y) | [0,+inf) | 4 | |
ddouble.CarlsonRF(x, y, z) | [0,+inf) | 4 | |
ddouble.CarlsonRJ(x, y, z, w) | [0,+inf) | 4 | |
ddouble.CarlsonRG(x, y, z) | [0,+inf) | 4 | |
ddouble.RiemannZeta(x) | (-inf,+inf) | 3 | |
ddouble.HurwitzZeta(x, a) | (1,+inf) | 3 | a ≥ 0 |
ddouble.DirichletEta(x) | (-inf,+inf) | 3 | |
ddouble.Polylog(n, x) | (-inf,1] | 3 | n ∈ [-4,8] |
ddouble.OwenT(h, a) | (-inf,+inf) | 5 | |
ddouble.Bump(x) | (-inf,+inf) | 4 | C-infinity smoothness basis function, bump(x)=1/(exp(1/x-1/(1-x))+1) |
ddouble.HermiteH(n, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.LaguerreL(n, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.LaguerreL(n, alpha, x) | (-inf,+inf) | 3 | n ≤ 64, associated |
ddouble.LegendreP(n, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.LegendreP(n, m, x) | [-1,1] | 3 | n ≤ 64, associated |
ddouble.ChebyshevT(n, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.ChebyshevU(n, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.ZernikeR(n, m, x) | [0,1] | 3 | n ≤ 64 |
ddouble.GegenbauerC(n, alpha, x) | (-inf,+inf) | 3 | n ≤ 64 |
ddouble.JacobiP(n, alpha, beta, x) | [-1,1] | 3 | n ≤ 64, alpha,beta > -1 |
ddouble.Bernoulli(n, x, centered) | [0,1] | 4 | n ≤ 64, centered: x->x-1/2 |
ddouble.MathieuA(n, q) | (-inf,+inf) | 4 | n ≤ 16 |
ddouble.MathieuB(n, q) | (-inf,+inf) | 4 | n ≤ 16 |
ddouble.MathieuC(n, q, x) | (-inf,+inf) | 4 | n ≤ 16, Accuracy deteriorates when q is very large. |
ddouble.MathieuS(n, q, x) | (-inf,+inf) | 4 | n ≤ 16, Accuracy deteriorates when q is very large. |
ddouble.Ldexp(x, y) | (-inf,+inf) | N/A | |
ddouble.Binomial(n, k) | N/A | 1 | n ≤ 1000 |
ddouble.Hypot(x, y) | N/A | 2 | |
ddouble.Min(x, y) | N/A | N/A | |
ddouble.Max(x, y) | N/A | N/A | |
ddouble.Clamp(v, min, max) | N/A | N/A | |
ddouble.CopySign(value, sign) | N/A | N/A | |
ddouble.Floor(x) | N/A | N/A | |
ddouble.Ceiling(x) | N/A | N/A | |
ddouble.Round(x) | N/A | N/A | |
ddouble.Truncate(x) | N/A | N/A | |
IEnumerable<ddouble>.Sum() | N/A | N/A | |
IEnumerable<ddouble>.Average() | N/A | N/A | |
IEnumerable<ddouble>.Min() | N/A | N/A | |
IEnumerable<ddouble>.Max() | N/A | N/A |
Constants
constant | value | note |
---|---|---|
ddouble.PI | 3.141592653589793238462... | Pi |
ddouble.E | 2.718281828459045235360... | Napier's E |
ddouble.EulerGamma | 0.577215664901532860606... | Euler's Gamma |
ddouble.Zeta3 | 1.202056903159594285399... | ζ(3), Apery const. |
ddouble.Zeta5 | 1.036927755143369926331... | ζ(5) |
ddouble.Zeta7 | 1.008349277381922826839... | ζ(7) |
ddouble.Zeta9 | 1.002008392826082214418... | ζ(9) |
ddouble.DigammaZero | 1.461632144968362341263... | Positive root of digamma |
ddouble.ErdosBorwein | 1.606695152415291763783... | Erdös Borwein constant |
ddouble.FeigenbaumDelta | 4.669201609102990671853... | Feigenbaum constant |
ddouble.LemniscatePI | 2.622057554292119810465... | Lemniscate constant |
ddouble.GlaisherA | 1.282427129100622636875... | Glaisher–Kinkelin constant |
ddouble.CatalanG | 0.915965594177219015055... | Catalan's constant |
ddouble.FransenRobinson | 2.807770242028519365222... | Fransén–Robinson constant |
ddouble.KhinchinK | 2.685452001065306445310... | Khinchin's constant |
ddouble.MeisselMertens | 0.261497212847642783755... | Meissel–Mertens constant |
ddouble.LambertOmega | 0.567143290409783873000... | LambertW(1) |
ddouble.LandauRamanujan | 0.764223653589220662991... | Landau–Ramanujan constant |
ddouble.MillsTheta | 1.306377883863080690469... | Mills constant |
ddouble.SoldnerMu | 1.451369234883381050284... | Ramanujan–Soldner constant |
ddouble.SierpinskiK | 0.822825249678847032995... | Sierpiński's constant, Define follows wolfram. |
ddouble.RcpFibonacci | 3.359885666243177553172... | Reciprocal Fibonacci constant |
ddouble.Niven | 1.705211140105367764289... | Niven's constant |
ddouble.GolombDickman | 0.624329988543550870992... | Golomb–Dickman constant |
Sequence
sequence | note |
---|---|
ddouble.TaylorSequence | Taylor,1/n! |
ddouble.Factorial | Factorial,n! |
ddouble.BernoulliSequence | Bernoulli,B(2k) |
ddouble.HarmonicNumber | HarmonicNumber, H_n |
ddouble.StieltjesGamma | StieltjesGamma, γ_n |
Casts
- long (accurately)
ddouble v0 = 123;
long n0 = (long)v0;
- double (accurately)
ddouble v1 = 0.5;
double n1 = (double)v1;
- decimal (approximately)
ddouble v1 = 0.1m;
decimal n1 = (decimal)v1;
- string (approximately)
ddouble v2 = "3.14e0";
string s0 = v2.ToString();
string s1 = v2.ToString("E8");
string s2 = $"{v2:E8}";
I/O
BinaryWriter, BinaryReader
Licence
Author
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net7.0
- No dependencies.
NuGet packages (11)
Showing the top 5 NuGet packages that depend on TYoshimura.DoubleDouble:
Package | Downloads |
---|---|
TYoshimura.Algebra
Linear Algebra |
|
TYoshimura.DoubleDouble.Complex
Double-Double Complex and Quaternion Implements |
|
TYoshimura.CurveFitting
Curvefitting - linear, polynomial, pade, arbitrary function |
|
TYoshimura.DoubleDouble.Statistic
Double-Double Statistic Implements |
|
TYoshimura.DoubleDouble.Integrate
Double-Double Numerical Integration Implements |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.2.1 | 7 | 11/14/2024 |
4.2.0 | 33 | 11/13/2024 |
4.1.0 | 77 | 11/13/2024 |
4.0.3 | 69 | 11/8/2024 |
4.0.2 | 78 | 11/7/2024 |
4.0.1 | 106 | 11/1/2024 |
4.0.0 | 147 | 10/31/2024 |
3.3.4 | 84 | 10/23/2024 |
3.3.3 | 59 | 10/21/2024 |
3.3.2 | 156 | 10/14/2024 |
3.3.1 | 75 | 10/13/2024 |
3.3.0 | 73 | 10/13/2024 |
3.2.9 | 88 | 10/11/2024 |
3.2.8 | 99 | 9/18/2024 |
3.2.7 | 120 | 9/10/2024 |
3.2.6 | 286 | 8/22/2024 |
3.2.5 | 129 | 8/22/2024 |
3.2.4 | 153 | 7/12/2024 |
3.2.3 | 103 | 6/9/2024 |
3.2.2 | 370 | 4/26/2024 |
3.2.1 | 372 | 2/22/2024 |
3.2.0 | 742 | 1/20/2024 |
3.1.6 | 472 | 11/12/2023 |
3.1.5 | 438 | 11/3/2023 |
3.1.4 | 473 | 11/3/2023 |
3.1.3 | 450 | 10/30/2023 |
3.1.2 | 463 | 10/28/2023 |
3.1.1 | 422 | 10/28/2023 |
3.1.0 | 497 | 10/21/2023 |
3.0.9 | 437 | 10/20/2023 |
3.0.8 | 478 | 10/19/2023 |
3.0.7 | 479 | 10/14/2023 |
3.0.6 | 487 | 10/13/2023 |
3.0.5 | 478 | 10/12/2023 |
3.0.4 | 462 | 10/11/2023 |
3.0.3 | 525 | 10/8/2023 |
3.0.2 | 505 | 10/7/2023 |
3.0.1 | 444 | 9/30/2023 |
3.0.0 | 497 | 9/30/2023 |
2.9.8 | 496 | 9/29/2023 |
2.9.7 | 501 | 9/16/2023 |
2.9.6 | 567 | 9/9/2023 |
2.9.5 | 563 | 9/9/2023 |
2.9.4 | 575 | 9/8/2023 |
2.9.3 | 540 | 9/8/2023 |
2.9.2 | 473 | 9/6/2023 |
2.9.1 | 502 | 9/5/2023 |
2.9.0 | 751 | 9/4/2023 |
2.8.6 | 827 | 3/18/2023 |
2.8.5 | 1,205 | 3/13/2023 |
2.8.4 | 719 | 3/11/2023 |
2.8.3 | 669 | 2/23/2023 |
2.8.2 | 669 | 2/17/2023 |
2.8.1 | 753 | 2/16/2023 |
2.8.0 | 666 | 2/13/2023 |
2.7.2 | 1,764 | 10/30/2022 |
2.7.1 | 790 | 10/28/2022 |
2.7.0 | 805 | 10/25/2022 |
2.6.1 | 811 | 10/14/2022 |
2.6.0 | 852 | 10/13/2022 |
2.5.6 | 852 | 9/18/2022 |
2.5.5 | 859 | 9/17/2022 |
2.5.4 | 804 | 9/16/2022 |
2.5.3 | 820 | 9/15/2022 |
2.5.2 | 802 | 9/7/2022 |
2.5.1 | 859 | 9/5/2022 |
2.5.0 | 2,096 | 9/4/2022 |
2.4.5 | 755 | 9/3/2022 |
2.4.4 | 790 | 9/2/2022 |
2.4.3 | 789 | 8/31/2022 |
2.4.2 | 882 | 2/8/2022 |
2.4.1 | 1,349 | 1/26/2022 |
2.4.0 | 831 | 1/25/2022 |
2.3.1 | 977 | 1/21/2022 |
2.3.0 | 937 | 1/20/2022 |
2.2.0 | 841 | 1/13/2022 |
2.1.2 | 878 | 1/12/2022 |
2.1.1 | 861 | 1/12/2022 |
2.1.0 | 643 | 1/11/2022 |
2.0.5 | 783 | 1/9/2022 |
2.0.4 | 717 | 1/8/2022 |
2.0.2 | 673 | 1/8/2022 |
2.0.1 | 696 | 1/7/2022 |
2.0.0 | 701 | 1/7/2022 |
1.9.4 | 691 | 1/6/2022 |
1.9.3 | 669 | 1/6/2022 |
1.9.2 | 718 | 1/5/2022 |
1.9.0 | 672 | 1/5/2022 |
1.8.0 | 664 | 1/4/2022 |
1.7.0 | 667 | 1/3/2022 |
1.6.1 | 681 | 12/25/2021 |
1.6.0 | 1,210 | 12/25/2021 |
1.5.2 | 639 | 12/22/2021 |
1.5.1 | 713 | 12/22/2021 |
1.5.0 | 702 | 12/22/2021 |
1.4.3 | 842 | 12/11/2021 |
1.4.2 | 809 | 12/11/2021 |
1.4.1 | 697 | 12/2/2021 |
1.4.0 | 1,183 | 12/1/2021 |
add rcpgamma, fix invgamma(near singular point)