summaryrefslogtreecommitdiffstats
path: root/mathfuncs_base.h
Commit message (Collapse)AuthorAgeFilesLines
* Reformat source code with clang-formatErik Schnetter2015-10-161-123/+120
| | | | | | | | | Note: If you have an existing checkout with modifications, then you should: (1) save your current state on a branch (2) run clang-format on this branch (3) compare this branch to a fresh checkout of the clang-formatted master Since both your branch and master have been formatted with clang-format, this will lead to a very small diff, avoiding spurious changes due to formatting differences.
* Provide lrintErik Schnetter2013-11-251-0/+1
|
* Introduce mad(), as low-accuracy version of fma()Erik Schnetter2013-09-101-0/+1
|
* Implement more integer functions: abs bitifthen clz isignbit max min ↵Erik Schnetter2013-09-011-1/+11
| | | | | | popcount rotate Rename integer signbit to isignbit to avoid name conflicts.
* Make frexp take a pointer argument instead of a referenceErik Schnetter2013-08-211-1/+1
|
* Implement frexpErik Schnetter2013-06-281-0/+1
|
* Implement nextafterErik Schnetter2013-06-091-0/+1
|
* Implement atan2 routineErik Schnetter2013-06-061-0/+1
|
* Implement IEEE-versions of isnan etc. that are not optimized awayErik Schnetter2013-04-221-0/+4
|
* Correct rounding and conversion functionsErik Schnetter2013-03-211-0/+1
|
* Add rint(), correct round()Erik Schnetter2013-02-191-0/+1
|
* Add cbrt, hypot, trunc; rename scalbn to ldexpErik Schnetter2013-02-161-1/+4
|
* Fold Chebyshev versions of sin and cos back into the main versionsErik Schnetter2013-02-141-4/+0
|
* Correct vector types used in math functionsErik Schnetter2013-02-141-2/+2
|
* Added optimized versions of sin and cos.Jesse W. Towner2013-02-111-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new functions have been added to the mathfuncs template class, and are named vml_sin_chebyshev_single, vml_sin_chebyshev_double, vml_cos_chebyshev_single, and vml_cos_chebyshev_double. The corresponding sin and cos member functions in the vector template structs have been updated to call into the new implementations. These functions use float optimized minimaxed Chebyshev polynomial approximations. They have good relative error distributions for IEEE-754 floating point numbers, as the highest contributing coefficient is selected to precisely map to either a 32-bit or 64-bit IEEE number for the _single and _double function variants respectively. The _single variants produce approximately ~30-bits of precision in the mantissa, and the _double variants produce around ~60-bits, which is more than enough to produce accurate values. The vml_tan function hasn't been updated, so it calls both sin and cos as it used to, and thus relies on the compiler to factor out common code. It's possible to implement a sincos function using these polynomials that interleaves the fmas, and since the fma instructions in both the sin and cos paths don't have any dependencies on one another, one of the paths is computed for essentially free on x86-64 platforms due to instruction parallelism. Alternatiely, tan can be implemented in terms of a specifically optimized Chebyshev rational function with good performance and properties.
* Add fdim fmax fmin, fma, isfinite isinf isnan isnormalErik Schnetter2012-12-181-0/+8
|
* Implement sin, make optimised builds workErik Schnetter2012-12-011-0/+6
|
* Implement cosh sinh tanhErik Schnetter2012-12-011-0/+10
|
* Implement ceil floor fmod pow remainder roundErik Schnetter2012-12-011-0/+8
|
* Implement asinh and expErik Schnetter2012-12-011-0/+11
|
* Import initial versionErik Schnetter2012-11-301-0/+67
OpenPOWER on IntegriCloud