LongCalc 0.4.8

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

// Install LongCalc as a Cake Tool
#tool nuget:?package=LongCalc&version=0.4.8

LongCalc Arbitrary Precision Float and Complex Number Library

Product Compatible and additional computed target framework versions.
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.5.34 1,066 2/10/2023
0.5.33 1,111 12/28/2021
0.5.32 1,198 10/2/2021
0.5.31 1,046 8/1/2021
0.5.30 1,069 3/25/2021
0.5.29 1,240 10/15/2020
0.5.28 1,169 9/24/2020
0.5.27 1,210 9/18/2020
0.5.26 1,323 9/17/2020
0.5.25 1,220 9/6/2020
0.5.24 1,159 8/25/2020
0.5.23 1,219 8/5/2020
0.5.22 1,592 7/31/2020
0.5.21 1,599 7/30/2020
0.5.20 1,222 7/29/2020
0.5.19 1,219 7/28/2020
0.5.18 1,247 5/22/2020
0.5.17 1,216 5/19/2020
0.5.16 1,263 5/17/2020
0.5.15 1,250 5/17/2020
0.5.14 1,257 5/11/2020
0.5.13 1,338 5/3/2020
0.5.12 1,341 4/4/2020
0.5.11 1,224 3/31/2020
0.5.10 1,267 2/13/2020
0.5.9 1,312 2/8/2020
0.5.8 1,280 2/5/2020
0.5.7 1,389 1/21/2020
0.5.6 1,276 11/27/2019
0.5.5 1,253 11/16/2019
0.5.4 1,247 11/7/2019
0.5.3 1,260 11/2/2019
0.5.2 1,281 10/21/2019
0.5.1 1,493 7/29/2019
0.4.12 1,491 6/15/2019
0.4.11 1,487 6/10/2019
0.4.10 1,508 5/13/2019
0.4.9 1,580 4/15/2019
0.4.8 1,472 4/7/2019
0.4.7 1,485 3/23/2019
0.4.6 1,464 3/4/2019
0.4.5 1,506 3/4/2019
0.4.4 1,582 2/10/2019
0.4.3 1,789 1/30/2019
0.4.2 1,737 1/29/2019
0.4.1 1,762 1/29/2019
0.3.25 1,492 3/25/2019
0.3.24 1,490 3/4/2019
0.3.23 1,748 1/25/2019
0.3.22 1,803 1/23/2019
0.3.21 1,816 1/12/2019
0.3.20 1,795 1/4/2019
0.3.19 1,774 1/3/2019
0.3.18 1,784 12/30/2018
0.1.25 1,509 3/25/2019
0.1.24 1,511 3/4/2019
0.1.23 1,844 1/12/2019
0.1.22 1,756 12/24/2018
0.1.21 2,067 4/20/2018
0.1.16 1,929 9/2/2017
0.1.15 1,892 8/23/2017
0.1.11 1,797 8/4/2017
0.1.10 1,920 8/1/2017
0.1.8 1,799 7/27/2017
0.1.7 1,853 6/14/2017
0.1.6 1,889 6/14/2017
0.1.5 1,911 6/10/2017
0.1.2 2,174 11/22/2016
0.1.1 1,874 11/12/2016

Unsigned Assembly

Throw an error on ('type')x for a bf or bcr x, when x is out of range of type 'type'. The user should be aware that no such error is thrown for an integer-type explicit cast ('type')x for an mpz_t x.

The long-to-mpz_t and mpz_t-to-long Mpz_tVal and LongVal conversion functions have been re-done in such a way that parsing of strings for numeric value is avoided.   

Correct an inefficiency in x.toString and x.Round for x very large or x near 1 and Precision large.

Added an optional parameter ZeroOrPiMatchPrecision to the trigonometric functions which, if greater than 0, returns (as appropriate) 1, 0, or -1 if the input matches a multiple of Pi/2 to ZeroOrPiMatchPrecision decimal digits.

A likely natural limitation (of which I am not certain) on the underlying Mpir.NET software is that the bitlength of an mpz_t variable cannot be greater than long.MaxValue. Operating under this assumption, the Bitlength, doBitlength, doIndexofOne are made to be of type long. The shiftLeft and shiftRight functions 'shift' parameter is now of type long.

The bf object is modified such that x.mant is now readonly for a bf x, and an internal long parameter 'BL' equal to x.Bitlength is included and tracked. BL is then re-calculated on the conclusion of any bf Add, Subtract, Multiply, or Divide or any 'new bf(...)' (other than 'new bf(x)' for a bf 'x'). This approach turns out to result in increased efficiency since the commonly used functions FloorLog2(x) and Log..(x) (among others) use the bitlength value. Operating under the assumption that an mpz_t Add, Subtract, Multiply or Divide result is (however briefly) fully contained in Process Memory, an estimate of the corresponding bf calculation memory requirements is made. If that estimate indicates the BL limitation would be exceeded, an error is thrown. If the estimate exceeds 3 gigabytes, garbage collection is forced and then memory availability is checked and an error is thrown if available memory is insufficient for the operation. This approach avoids the problem of an impasse which previously occurred in situations such as x.Add(y) when x is very large (or very small) compared to y (for bf 'x' and 'y').   

Checks for arithmetic overflow or underflow are again compiler-included in this release.