LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
Classes | Functions
lsst::utils::PowFast

Fast approximation to pow and exp, with adjustable precision. More...

Classes

class  lsst::utils::PowFast
 

Functions

template<int >
const PowFast & lsst::utils::getPowFast ()
 return a singleton PowFast with the specified precision in its lookup tables More...
 

Detailed Description

Fast approximation to pow and exp, with adjustable precision.

The PowFast class has member functions to calculate pow and exp with the specified precision, and getPowFast may be used to return a singleton PowFast object e.g.

* #include "lsst/utils/PowFast.h"
*
* auto pf = lsst::utils::getPowFast<11>();
*
* float x = 1;
* std::cout << std::exp(x) << " " << pf::exp(x) << std::endl;
*
Note
Please do not use these routines without profiling and a code review! There are places where it's a good tradeoff, but the average casual user of exp() should stick to std::exp()

Precision can be 0 to 18.
Storage is 4*(2^precision) bytes – 4B to 1MB
For precision 11: mean error < 0.01%, max error < 0.02%, storage 8KB.

Function Documentation

template<int >
const PowFast & lsst::utils::getPowFast ( )

return a singleton PowFast with the specified precision in its lookup tables

Definition at line 89 of file PowFast.h.

90 {
91  static const PowFast k(precision);
92  return k;
93 }