Initatan

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include "DataFormats/Math/interface/FastMath.h"
namespace fastmath_details {
  float atanbuf_[257 * 2];
  double datanbuf_[513 * 2];

  namespace {
    // ====================================================================
    // arctan initialization
    // =====================================================================
    struct Initatan {
      Initatan() {
        unsigned int ind;
        for (ind = 0; ind <= 256; ind++) {
          double v = ind / 256.0;
          double asinv = ::asin(v);
          atanbuf_[ind * 2] = ::cos(asinv);
          atanbuf_[ind * 2 + 1] = asinv;
        }
        for (ind = 0; ind <= 512; ind++) {
          double v = ind / 512.0;
          double asinv = ::asin(v);
          datanbuf_[ind * 2] = ::cos(asinv);
          datanbuf_[ind * 2 + 1] = asinv;
        }
      }
    };
    Initatan initAtan;
  }  // namespace
}  // namespace fastmath_details