No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
coder0xff Merge pull request #6 from aklette/master
Implement IComparable<Quadruple>
Latest commit 7bb2c1c Aug 1, 2018
Permalink
Failed to load latest commit information.
QPFloat No commit message Aug 1, 2018
COPYING.txt Initial commit Nov 23, 2010
QPFloat.sln Initial commit Nov 23, 2010
README.txt Updated readme file. Aug 1, 2011

README.txt

# QPFloat (GPL 3.0) #

For high-precision mathematics, the Quadruple-Precision Floating Point library (QPFloat) emulates the IEEE 754 2008 binary128 on x86, and x64 (and probably any other little-endian platform) using integer arithmetic and bit manipulation. It contains a native C++ and assembler implementation, and a .Net C++/CLI implementation.

## Features ##

Much effort has been put into supporting a full feature set, including optimized transcendental functions to full precision.

### Standard operations ###
* addition, subtraction, multiplication, division
* Min, Max, Abs, Ceiling, Floor, Round, Truncate, Fraction
* ToString and FromString
* Cast operators to and from native numeric data types

### Numeric information ###
* IsZero
* IsNaN
* IsInfinite
* IsSigned
* IsSubNormal

### Transcendental functions ###
* natural logarithm (Ln), arbitrary-base logarithm (Log)
* exponentiation (Exp)
* power function (Pow)
* Sin, Cos, Tan
* ASin, ACos, ATan, ATan2

### Miscellaneous features ###
* Fast! Optimized low level bit manipulation
* Hard coded constant Pi and E to full quadruple precision
* Implemented on little-endian architecture, may or may not work on big-endian???
* Strictly follows IEEE specifications to the extent availabile on Wikipedia.
* Multiple guard bits
* Arithmetic on sub-normals is fully supported.
* Inf, -Inf, and NaN are fully supported.
* round-to-even
* emulates FPU exceptions with enable/disable flags (default: all disabled)
       
## Using ##

### VB.Net, C# users, and C++/CLI ###
1. Add a reference to Release/QPFloat.dll (x64/Release/QPFloat.dll for x64)
2. Create new variables using System.Quadruple
    
### C++ users ###
1. Add a reference to QPFloat.dll (x64/Release/QPFloat.dll for x64)
2. include "__float128.h"
3. create new variables using __float128

## Compiling ##

### Microsoft Visual C++ ###
* This code base can be compiled with or without /clr (Managed C++) to the compiler.
* If /clr IS used, then this library can be used by C#, VB.Net, and C++/CLI via the type System.Quadruple.
* If /clr IS NOT used, #ifdef _MANAGED has been used to automatically exclude the managed implementation.
* Since extension methods can't be used to add static functions to System.Math, Operations like Abs, Sin, etc are static methods of Quadruple.
* __float128 is the unmanaged (faster) implementation, which is still present even when /clr is used.
    
### Other compilers ###
* This code uses #ifdef to remove Microsoft specific functionality automatically (#ifdef _MANAGED)
* Though I've not tried, it should be relatively easy to build using other compilers.
* following existing conventions, __float128 is the type proffered by this library.