GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
exponentiate_const_cci.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2017 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23
24#ifndef INCLUDED_BLOCKS_EXPONENTIATE_CONST_CCI_H
25#define INCLUDED_BLOCKS_EXPONENTIATE_CONST_CCI_H
26
27#include <gnuradio/blocks/api.h>
28#include <gnuradio/sync_block.h>
29
30namespace gr {
31namespace blocks {
32
33/*!
34 * \brief Exponentiates a complex stream with an integer exponent
35 * \ingroup blocks
36 *
37 * \details
38 * This block raises a complex stream to an integer exponent. The exponent
39 * must be at least 1. There is a callback function so the exponent can be
40 * changed at runtime.
41 *
42 * NOTE: The algorithm uses iterative multiplication to achieve exponentiation,
43 * hence it is O(exponent). Therefore, this block could be inefficient for large
44 * exponents.
45 */
47{
48public:
49 typedef boost::shared_ptr<exponentiate_const_cci> sptr;
50
51 /*
52 * \param exponent Exponent the input stream is raised to, which must be an integer.
53 * The algorithm uses iterative multiplication to achieve exponentiation, hence it is
54 * O(exponent). Therefore, this block could be inefficient for large exponents.
55 * \param vlen Vector length of input/output stream
56 */
57 static sptr make(int exponent, size_t vlen = 1);
58
59 virtual void set_exponent(int exponent) = 0;
60};
61
62} // namespace blocks
63} // namespace gr
64
65#endif /* INCLUDED_BLOCKS_EXPONENTIATE_CONST_CCI_H */
Exponentiates a complex stream with an integer exponent.
Definition: exponentiate_const_cci.h:47
static sptr make(int exponent, size_t vlen=1)
virtual void set_exponent(int exponent)=0
boost::shared_ptr< exponentiate_const_cci > sptr
Definition: exponentiate_const_cci.h:49
synchronous 1:1 input to output with history
Definition: sync_block.h:38
#define BLOCKS_API
Definition: gr-blocks/include/gnuradio/blocks/api.h:30
Include this header to use the message passing features.
Definition: basic_block.h:45