Menu

Tree [393210] default tip /
 History

Read Only access


File Date Author Commit
 QPFloat 2011-08-02 coder0xff coder0xff [393210] Updated readme file.
 COPYING.txt 2010-11-23 coder0xff coder0xff [8f27bb] Initial commit
 QPFloat.sln 2010-11-23 coder0xff coder0xff [8f27bb] Initial commit
 README.txt 2011-08-02 coder0xff coder0xff [393210] Updated readme file.

Read Me

# 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.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.