TYoshimura.DoubleDouble 2.4.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package TYoshimura.DoubleDouble --version 2.4.1
NuGet\Install-Package TYoshimura.DoubleDouble -Version 2.4.1
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.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TYoshimura.DoubleDouble --version 2.4.1
#r "nuget: TYoshimura.DoubleDouble, 2.4.1"
#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=2.4.1

// Install TYoshimura.DoubleDouble as a Cake Tool
#tool nuget:?package=TYoshimura.DoubleDouble&version=2.4.1

DoubleDouble

double-double arithmetic implements

Requirement

.NET 5.0

Install

Download DLL
Download Nuget

  • To install, just import the DLL.
  • This library does not change the environment at all.

More Precision ?

MultiPrecision

Types

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) 4 ddouble.Pow(x, y)
pow10 (-inf,+inf) 4 ddouble.Pow10(x)
exp (-inf,+inf) 4 ddouble.Exp(x)
expm1 (-inf,+inf) 4 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) 4 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) 5 ddouble.LogGamma(x)
digamma (-inf,+inf) 5 Near the positive zero point, polynomial interpolation is used. ddouble.Digamma(x)
beta [0,+inf) 5 ddouble.Beta(a, b)
incomplete_beta [0,1] 8 Accuracy decreases when the radio of a,b is too large. a,b ≤ 64 ddouble.IncompleteBeta(x, a, b)
erf (-inf,+inf) 5 ddouble.Erf(x)
erfc (-inf,+inf) 5 ddouble.Erfc(x)
inverse_erf (-1,1) 8 ddouble.InverseErf(x)
inverse_erfc (0,2) 8 ddouble.InverseErfc(x)
erfi (-inf,+inf) 8 ddouble.Erfi(x)
dawson_f (-inf,+inf) 4 ddouble.DawsonF(x)
bessel_j [0,+inf) 16 Accuracy deteriorates near zero points. abs(nu) ≤ 8 ddouble.BesselJ(nu, x)
bessel_y [0,+inf) 16 Accuracy deteriorates near zero points. abs(nu) ≤ 8 ddouble.BesselY(nu, x)
bessel_i [0,+inf) 16 abs(nu) ≤ 8 ddouble.BesselI(nu, x)
bessel_k [0,+inf) 16 abs(nu) ≤ 8 ddouble.BesselK(nu, x)
struve_h (-inf,+inf) 16 0 ≤ n ≤ 8 ddouble.StruveH(n, x)
struve_k [0,+inf) 16 0 ≤ n ≤ 8 ddouble.StruveK(n, x)
struve_l (-inf,+inf) 16 0 ≤ n ≤ 8 ddouble.StruveL(n, x)
struve_m [0,+inf) 16 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_theta1 (-inf,+inf) 4 q ≤ 0.995 ddouble.EllipticTheta1(x, q)
elliptic_theta2 (-inf,+inf) 4 q ≤ 0.995 ddouble.EllipticTheta2(x, q)
elliptic_theta3 (-inf,+inf) 4 q ≤ 0.995 ddouble.EllipticTheta3(x, q)
elliptic_theta4 (-inf,+inf) 4 q ≤ 0.995 ddouble.EllipticTheta4(x, q)
agm [0,+inf) 2 ddouble.Agm(a, b)
fresnel_c (-inf,+inf) 8 ddouble.FresnelC(x)
fresnel_s (-inf,+inf) 8 ddouble.FresnelS(x)
ei (-inf,+inf) 8 exponential integral ddouble.Ei(x)
ein (-inf,+inf) 8 complementary exponential integral ddouble.Ein(x)
li [0,+inf) 10 logarithmic integral li(x)=ei(log(x)) ddouble.Li(x)
si (-inf,+inf) 8 sin integral, limit_zero=true: si(x) ddouble.Si(x, limit_zero)
ci [0,+inf) 8 cos integral ddouble.Ci(x)
lambertw [-1/e,+inf) 8 ddouble.LambertW(x)
airy_ai (-inf,+inf) 10 Accuracy deteriorates near zero points. ddouble.AiryAi(x)
airy_bi (-inf,+inf) 10 Accuracy deteriorates near zero points. ddouble.AiryBi(x)
lower_incomplete_gamma [0,+inf) 10 nu ≤ 128 ddouble.LowerIncompleteGamma(nu, x)
upper_incomplete_gamma [0,+inf) 10 nu ≤ 128 ddouble.UpperIncompleteGamma(nu, 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)
dirichlet_eta (-inf,+inf) 3 ddouble.DirichletEta(x)
owen's_t (-inf,+inf) 10 ddouble.OwenT(h, a)
ldexp (-inf,+inf) N/A ddouble.Ldexp(x, y)
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

Sequence

sequence note usage
Taylor 1/n! ddouble.TaylorSequence
Bernoulli B(2k) ddouble.BernoulliSequence
HarmonicNumber H_n ddouble.HarmonicNumber

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

MIT

Author

T.Yoshimura

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net5.0

    • No dependencies.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on TYoshimura.DoubleDouble:

Package Downloads
TYoshimura.Algebra

Linear Algebra

TYoshimura.CurveFitting

Curvefitting - linear, polynomial, pade, arbitrary function

TYoshimura.DoubleDouble.Complex

Double-Double Complex and Quaternion Implements

TYoshimura.DoubleDouble.Integrate

Double-Double Numerical Integration Implements

TYoshimura.DoubleDouble.Differentiate

Double-Double Numerical Differentiation Implements

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.2.1 182 2/22/2024
3.2.0 352 1/20/2024
3.1.6 389 11/12/2023
3.1.5 377 11/3/2023
3.1.4 396 11/3/2023
3.1.3 384 10/30/2023
3.1.2 383 10/28/2023
3.1.1 366 10/28/2023
3.1.0 421 10/21/2023
3.0.9 364 10/20/2023
3.0.8 404 10/19/2023
3.0.7 402 10/14/2023
3.0.6 420 10/13/2023
3.0.5 414 10/12/2023
3.0.4 385 10/11/2023
3.0.3 446 10/8/2023
3.0.2 434 10/7/2023
3.0.1 380 9/30/2023
3.0.0 424 9/30/2023
2.9.8 431 9/29/2023
2.9.7 420 9/16/2023
2.9.6 476 9/9/2023
2.9.5 485 9/9/2023
2.9.4 511 9/8/2023
2.9.3 474 9/8/2023
2.9.2 409 9/6/2023
2.9.1 431 9/5/2023
2.9.0 622 9/4/2023
2.8.6 746 3/18/2023
2.8.5 1,059 3/13/2023
2.8.4 666 3/11/2023
2.8.3 609 2/23/2023
2.8.2 578 2/17/2023
2.8.1 677 2/16/2023
2.8.0 606 2/13/2023
2.7.2 1,627 10/30/2022
2.7.1 737 10/28/2022
2.7.0 727 10/25/2022
2.6.1 739 10/14/2022
2.6.0 801 10/13/2022
2.5.6 787 9/18/2022
2.5.5 794 9/17/2022
2.5.4 747 9/16/2022
2.5.3 770 9/15/2022
2.5.2 742 9/7/2022
2.5.1 804 9/5/2022
2.5.0 1,938 9/4/2022
2.4.5 698 9/3/2022
2.4.4 740 9/2/2022
2.4.3 733 8/31/2022
2.4.2 814 2/8/2022
2.4.1 1,267 1/26/2022
2.4.0 794 1/25/2022
2.3.1 897 1/21/2022
2.3.0 878 1/20/2022
2.2.0 779 1/13/2022
2.1.2 827 1/12/2022
2.1.1 812 1/12/2022
2.1.0 585 1/11/2022
2.0.5 714 1/9/2022
2.0.4 640 1/8/2022
2.0.2 640 1/8/2022
2.0.1 639 1/7/2022
2.0.0 641 1/7/2022
1.9.4 622 1/6/2022
1.9.3 610 1/6/2022
1.9.2 664 1/5/2022
1.9.0 632 1/5/2022
1.8.0 599 1/4/2022
1.7.0 623 1/3/2022
1.6.1 650 12/25/2021
1.6.0 1,101 12/25/2021
1.5.2 584 12/22/2021
1.5.1 675 12/22/2021
1.5.0 647 12/22/2021
1.4.3 785 12/11/2021
1.4.2 757 12/11/2021
1.4.1 668 12/2/2021
1.4.0 1,110 12/1/2021

+ struve