CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CordicXilinx.h
Go to the documentation of this file.
1 #ifndef CordicXilinx_H
2 #define CordicXilinx_H
3 
4 #include <vector>
5 #include <array>
6 #include <stdint.h>
7 
9 {
10  public:
11  CordicXilinx(int inputBits, int outputBits, bool debug=false);
12 
13  // Fills aPhi and aMagnitude with result scaled to 2^outputBits
14  // input must be signed and in the range [ -2^(inputBits-1), 2^(inputBits-1) )
15  void operator() ( int32_t xInput , int32_t yInput , int32_t& aPhi , uint32_t& aMagnitude ) const;
16 
17  // Returns angle in fixed point according to internalBits_ precision
18  // The integer part is 3 bits (i.e. -4 to 3)
19  // Valid input is -pi < angle < pi
20  int encodeAngle(const double angleFloat) const;
21 
22  private:
23  const int inputBits_;
24  const int outputBits_;
25  const bool debug_;
26 
27  std::vector<int> rotations_;
28  // For (probably unnecessary) optimization
29  std::array<int, 3> encodedAngles_;
30  enum { Pi, HalfPi, NHalfPi };
34 };
35 
36 #endif
std::vector< int > rotations_
Definition: CordicXilinx.h:27
const int inputBits_
Definition: CordicXilinx.h:23
const int outputBits_
Definition: CordicXilinx.h:24
CordicXilinx(int inputBits, int outputBits, bool debug=false)
Definition: CordicXilinx.cc:33
const bool debug_
Definition: CordicXilinx.h:25
#define debug
Definition: HDRShower.cc:19
void operator()(int32_t xInput, int32_t yInput, int32_t &aPhi, uint32_t &aMagnitude) const
Definition: CordicXilinx.cc:67
int encodeAngle(const double angleFloat) const
Definition: CordicXilinx.cc:60
std::array< int, 3 > encodedAngles_
Definition: CordicXilinx.h:29