TYoshimura.DoubleDouble
2.8.3
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 2.8.3
NuGet\Install-Package TYoshimura.DoubleDouble -Version 2.8.3
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="2.8.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TYoshimura.DoubleDouble" Version="2.8.3" />
<PackageReference Include="TYoshimura.DoubleDouble" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TYoshimura.DoubleDouble --version 2.8.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: TYoshimura.DoubleDouble, 2.8.3"
#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.
#:package TYoshimura.DoubleDouble@2.8.3
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TYoshimura.DoubleDouble&version=2.8.3
#tool nuget:?package=TYoshimura.DoubleDouble&version=2.8.3
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 6.0
Install
More Precision ?
Type
| type | mantissa bits | significant digits |
|---|---|---|
| ddouble | 104 | 30 |
Epsilon: 2^-968 = 4.00833e-292
MaxValue : 2^1024 = 1.79769e308
Functions
| function | domain | mantissa error bits | note | usage |
|---|---|---|---|---|
| sqrt | [0,+inf) | 2 | ddouble.Sqrt(x) | |
| cbrt | (-inf,+inf) | 2 | ddouble.Cbrt(x) | |
| log2 | (0,+inf) | 2 | ddouble.Log2(x) | |
| log | (0,+inf) | 3 | ddouble.Log(x) | |
| log10 | (0,+inf) | 3 | ddouble.Log10(x) | |
| log1p | (-1,+inf) | 3 | log(1+x) | ddouble.Log1p(x) |
| pow2 | (-inf,+inf) | 1 | ddouble.Pow2(x) | |
| pow | (-inf,+inf) | 2 | ddouble.Pow(x, y) | |
| pow10 | (-inf,+inf) | 2 | ddouble.Pow10(x) | |
| exp | (-inf,+inf) | 2 | ddouble.Exp(x) | |
| expm1 | (-inf,+inf) | 2 | exp(x)-1 | ddouble.Expm1(x) |
| sin | (-inf,+inf) | 2 | ddouble.Sin(x) | |
| cos | (-inf,+inf) | 2 | ddouble.Cos(x) | |
| tan | (-inf,+inf) | 3 | ddouble.Tan(x) | |
| sinpi | (-inf,+inf) | 1 | sin(πx) | ddouble.SinPI(x) |
| cospi | (-inf,+inf) | 1 | cos(πx) | ddouble.CosPI(x) |
| tanpi | (-inf,+inf) | 2 | tan(πx) | ddouble.TanPI(x) |
| sinh | (-inf,+inf) | 2 | ddouble.Sinh(x) | |
| cosh | (-inf,+inf) | 2 | ddouble.Cosh(x) | |
| tanh | (-inf,+inf) | 2 | ddouble.Tanh(x) | |
| asin | [-1,1] | 2 | Accuracy deteriorates near x=-1,1. | ddouble.Asin(x) |
| acos | [-1,1] | 2 | Accuracy deteriorates near x=-1,1. | ddouble.Acos(x) |
| atan | (-inf,+inf) | 2 | ddouble.Atan(x) | |
| atan2 | (-inf,+inf) | 2 | ddouble.Atan2(y, x) | |
| arsinh | (-inf,+inf) | 2 | ddouble.Arsinh(x) | |
| arcosh | [1,+inf) | 2 | ddouble.Arcosh(x) | |
| artanh | (-1,1) | 4 | Accuracy deteriorates near x=-1,1. | ddouble.Artanh(x) |
| sinc | (-inf,+inf) | 2 | ddouble.Sinc(x, normalized) | |
| sinhc | (-inf,+inf) | 3 | ddouble.Sinhc(x) | |
| gamma | (-inf,+inf) | 2 | Accuracy deteriorates near non-positive intergers. If x is Natual number lass than 35, an exact integer value is returned. | ddouble.Gamma(x) |
| loggamma | (0,+inf) | 4 | ddouble.LogGamma(x) | |
| digamma | (-inf,+inf) | 4 | Near the positive zero point, polynomial interpolation is used. | ddouble.Digamma(x) |
| polygamma | (-inf,+inf) | 4 | Accuracy deteriorates near non-positive intergers. n ≤ 16 | ddouble.Polygamma(n, x) |
| inverse_gamma | [1,+inf) | 4 | gamma^-1(x) | ddouble.InverseGamma(x) |
| lower_incomplete_gamma | [0,+inf) | 4 | nu ≤ 128 | ddouble.LowerIncompleteGamma(nu, x) |
| upper_incomplete_gamma | [0,+inf) | 4 | nu ≤ 128 | ddouble.UpperIncompleteGamma(nu, x) |
| beta | [0,+inf) | 4 | ddouble.Beta(a, b) | |
| incomplete_beta | [0,1] | 4 | Accuracy decreases when the radio of a,b is too large. a,b ≤ 64 | ddouble.IncompleteBeta(x, a, b) |
| erf | (-inf,+inf) | 3 | ddouble.Erf(x) | |
| erfc | (-inf,+inf) | 3 | ddouble.Erfc(x) | |
| inverse_erf | (-1,1) | 3 | ddouble.InverseErf(x) | |
| inverse_erfc | (0,2) | 3 | ddouble.InverseErfc(x) | |
| erfi | (-inf,+inf) | 4 | ddouble.Erfi(x) | |
| dawson_f | (-inf,+inf) | 4 | ddouble.DawsonF(x) | |
| bessel_j | [0,+inf) | 4 | Accuracy deteriorates near zero points. abs(nu) ≤ 8 | ddouble.BesselJ(nu, x) |
| bessel_y | [0,+inf) | 4 | Accuracy deteriorates near zero points. abs(nu) ≤ 8 | ddouble.BesselY(nu, x) |
| bessel_i | [0,+inf) | 4 | abs(nu) ≤ 8 | ddouble.BesselI(nu, x) |
| bessel_k | [0,+inf) | 4 | abs(nu) ≤ 8 | ddouble.BesselK(nu, x) |
| struve_h | (-inf,+inf) | 4 | 0 ≤ n ≤ 8 | ddouble.StruveH(n, x) |
| struve_k | [0,+inf) | 4 | 0 ≤ n ≤ 8 | ddouble.StruveK(n, x) |
| struve_l | (-inf,+inf) | 4 | 0 ≤ n ≤ 8 | ddouble.StruveL(n, x) |
| struve_m | [0,+inf) | 4 | 0 ≤ n ≤ 8 | ddouble.StruveM(n, x) |
| elliptic_k | [0,1] | 4 | k: elliptic modulus, m=k^2 | ddouble.EllipticK(m) |
| elliptic_e | [0,1] | 4 | k: elliptic modulus, m=k^2 | ddouble.EllipticE(m) |
| elliptic_pi | [0,1] | 4 | k: elliptic modulus, m=k^2 | ddouble.EllipticPi(n, m) |
| incomplete_elliptic_k | [0,2pi] | 4 | k: elliptic modulus, m=k^2 | ddouble.EllipticK(x, m) |
| incomplete_elliptic_e | [0,2pi] | 4 | k: elliptic modulus, m=k^2 | ddouble.EllipticE(x, m) |
| incomplete_elliptic_pi | [0,2pi] | 4 | k: elliptic modulus, m=k^2 Argument order follows wolfram. | ddouble.EllipticPi(n, x, m) |
| elliptic_theta | (-inf,+inf) | 4 | a=1...4, q ≤ 0.995 | ddouble.EllipticTheta(a, x, q) |
| kepler_e | (-inf,+inf) | 6 | inverse kepler's equation, e(eccentricity) ≤ 128 | ddouble.KeplerE(m, e, centered) |
| agm | [0,+inf) | 2 | ddouble.Agm(a, b) | |
| fresnel_c | (-inf,+inf) | 4 | ddouble.FresnelC(x) | |
| fresnel_s | (-inf,+inf) | 4 | ddouble.FresnelS(x) | |
| ei | (-inf,+inf) | 4 | exponential integral | ddouble.Ei(x) |
| ein | (-inf,+inf) | 4 | complementary exponential integral | ddouble.Ein(x) |
| li | [0,+inf) | 5 | logarithmic integral li(x)=ei(log(x)) | ddouble.Li(x) |
| si | (-inf,+inf) | 4 | sin integral, limit_zero=true: si(x) | ddouble.Si(x, limit_zero) |
| ci | [0,+inf) | 4 | cos integral | ddouble.Ci(x) |
| shi | (-inf,+inf) | 5 | hyperbolic sin integral | ddouble.Shi(x) |
| chi | [0,+inf) | 5 | hyperbolic cos integral | ddouble.Chi(x) |
| lambert_w | [-1/e,+inf) | 4 | ddouble.LambertW(x) | |
| airy_ai | (-inf,+inf) | 5 | Accuracy deteriorates near zero points. | ddouble.AiryAi(x) |
| airy_bi | (-inf,+inf) | 5 | Accuracy deteriorates near zero points. | ddouble.AiryBi(x) |
| jacobi_sn | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiSn(x, m) |
| jacobi_cn | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiCn(x, m) |
| jacobi_dn | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiDn(x, m) |
| jacobi_amplitude | (-inf,+inf) | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiAm(x, m) |
| inverse_jacobi_sn | [-1,+1] | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiArcSn(x, m) |
| inverse_jacobi_cn | [-1,+1] | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiArcCn(x, m) |
| inverse_jacobi_dn | [0,1] | 4 | k: elliptic modulus, m=k^2 | ddouble.JacobiArcDn(x, m) |
| carlson_rd | [0,+inf) | 4 | ddouble.CarlsonRD(x, y, z) | |
| carlson_rc | [0,+inf) | 4 | ddouble.CarlsonRC(x, y) | |
| carlson_rf | [0,+inf) | 4 | ddouble.CarlsonRF(x, y, z) | |
| carlson_rj | [0,+inf) | 4 | ddouble.CarlsonRJ(x, y, z, w) | |
| carlson_rg | [0,+inf) | 4 | ddouble.CarlsonRG(x, y, z) | |
| riemann_zeta | (-inf,+inf) | 3 | ddouble.RiemannZeta(x) | |
| hurwitz_zeta | (1,+inf) | 3 | a ≥ 0 | ddouble.HurwitzZeta(x, a) |
| dirichlet_eta | (-inf,+inf) | 3 | ddouble.DirichletEta(x) | |
| polylog | (-inf,1] | 3 | n ∈ [-4,8] | ddouble.Polylog(n, x) |
| owen's_t | (-inf,+inf) | 5 | ddouble.OwenT(h, a) | |
| bump | (-inf,+inf) | 4 | C-infinity smoothness basis function, bump(x)=1/(exp(1/x-1/(1-x))+1) | ddouble.Bump(x) |
| hermite_h | (-inf,+inf) | 3 | n ≤ 64 | ddouble.HermiteH(n, x) |
| laguerre_l | (-inf,+inf) | 3 | n ≤ 64 | ddouble.LaguerreL(n, x) |
| associated_laguerre_l | (-inf,+inf) | 3 | n ≤ 64 | ddouble.LaguerreL(n, alpha, x) |
| legendre_p | (-inf,+inf) | 3 | n ≤ 64 | ddouble.LegendreP(n, x) |
| associated_legendre_p | [-1,1] | 3 | n ≤ 64 | ddouble.LegendreP(n, m, x) |
| chebyshev_t | (-inf,+inf) | 3 | n ≤ 64 | ddouble.ChebyshevT(n, x) |
| chebyshev_u | (-inf,+inf) | 3 | n ≤ 64 | ddouble.ChebyshevU(n, x) |
| zernike_r | [0,1] | 3 | n ≤ 64 | ddouble.ZernikeR(n, m, x) |
| gegenbauer_c | (-inf,+inf) | 3 | n ≤ 64 | ddouble.GegenbauerC(n, alpha, x) |
| jacobi_p | [-1,1] | 3 | n ≤ 64, alpha,beta > -1 | ddouble.JacobiP(n, alpha, beta, x) |
| bernoulli | [0,1] | 4 | n ≤ 64, centered: x->x-1/2 | ddouble.Bernoulli(n, x, centered) |
| mathieu_eigenvalue_a | (-inf,+inf) | 4 | n ≤ 16 | ddouble.MathieuA(n, q) |
| mathieu_eigenvalue_b | (-inf,+inf) | 4 | n ≤ 16 | ddouble.MathieuB(n, q) |
| mathieu_ce | (-inf,+inf) | 4 | n ≤ 16, Accuracy deteriorates when q is very large. | ddouble.MathieuC(n, q, x) |
| mathieu_se | (-inf,+inf) | 4 | n ≤ 16, Accuracy deteriorates when q is very large. | ddouble.MathieuS(n, q, x) |
| ldexp | (-inf,+inf) | N/A | ddouble.Ldexp(x, y) | |
| binomial | N/A | 1 | n ≤ 1000 | ddouble.Binomial(n, k) |
| min | N/A | N/A | ddouble.Min(x, y) | |
| max | N/A | N/A | ddouble.Max(x, y) | |
| floor | N/A | N/A | ddouble.Floor(x) | |
| ceiling | N/A | N/A | ddouble.Ceiling(x) | |
| round | N/A | N/A | ddouble.Round(x) | |
| truncate | N/A | N/A | ddouble.Truncate(x) | |
| array sum | N/A | N/A | IEnumerable<ddouble>.Sum() | |
| array average | N/A | N/A | IEnumerable<ddouble>.Average() | |
| array min | N/A | N/A | IEnumerable<ddouble>.Min() | |
| array max | N/A | N/A | IEnumerable<ddouble>.Max() |
Constants
| constant | value | note | usage |
|---|---|---|---|
| Pi | 3.141592653589793238462... | ddouble.PI | |
| Napier's E | 2.718281828459045235360... | ddouble.E | |
| Euler's Gamma | 0.577215664901532860606... | ddouble.EulerGamma | |
| ζ(3) | 1.202056903159594285399... | Apery const. | ddouble.Zeta3 |
| ζ(5) | 1.036927755143369926331... | ddouble.Zeta5 | |
| ζ(7) | 1.008349277381922826839... | ddouble.Zeta7 | |
| ζ(9) | 1.002008392826082214418... | ddouble.Zeta9 | |
| Positive root of digamma | 1.461632144968362341263... | ddouble.DigammaZero | |
| Erdös Borwein constant | 1.606695152415291763783... | ddouble.ErdosBorwein | |
| Feigenbaum constant | 4.669201609102990671853... | ddouble.FeigenbaumDelta | |
| Lemniscate constant | 2.622057554292119810465... | ddouble.LemniscatePI |
Sequence
| sequence | note | usage |
|---|---|---|
| Taylor | 1/n! | ddouble.TaylorSequence |
| Factorial | n! | ddouble.Factorial |
| Bernoulli | B(2k) | ddouble.BernoulliSequence |
| HarmonicNumber | H_n | ddouble.HarmonicNumber |
| StieltjesGamma | γ_n | ddouble.StieltjesGamma |
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 | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- No dependencies.
NuGet packages (13)
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.DoubleDouble.Statistic
Double-Double Statistic Implements |
|
|
TYoshimura.CurveFitting
Curvefitting - linear, polynomial, pade, arbitrary function |
|
|
TYoshimura.DoubleDouble.Integrate
Double-Double Numerical Integration Implements |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.0.7 | 144 | 3/10/2026 |
| 5.0.6 | 150 | 2/1/2026 |
| 5.0.5 | 143 | 2/1/2026 |
| 5.0.4 | 175 | 1/16/2026 |
| 5.0.3 | 145 | 1/16/2026 |
| 5.0.2 | 259 | 12/25/2025 |
| 5.0.1 | 309 | 12/6/2025 |
| 5.0.0 | 204 | 12/6/2025 |
| 4.2.6 | 466 | 11/22/2024 |
| 4.2.5 | 331 | 11/22/2024 |
| 4.2.4 | 301 | 11/21/2024 |
| 4.2.3 | 334 | 11/18/2024 |
| 4.2.2 | 364 | 11/17/2024 |
| 4.2.1 | 503 | 11/14/2024 |
| 4.2.0 | 328 | 11/13/2024 |
| 4.1.0 | 355 | 11/13/2024 |
| 4.0.3 | 311 | 11/8/2024 |
| 4.0.2 | 828 | 11/7/2024 |
| 4.0.1 | 398 | 11/1/2024 |
| 2.8.3 | 827 | 2/23/2023 |
Loading failed
+ mathieu