Boost logo

Boost Users :

Subject: [Boost-users] PP: 2 to the power x macro
From: Hicham Mouline (hicham_at_[hidden])
Date: 2010-02-01 11:56:35


Hello,

I have written this code to return 2 to the power x.

#include <boost/preprocessor/repetition/for.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/preprocessor/arithmetic/add.hpp>
#include <boost/preprocessor/arithmetic/sub.hpp>
#include <boost/preprocessor/arithmetic/mul.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/seq/elem.hpp>

#define PRED(r,state) BOOST_PP_TUPLE_ELEM(2, 1, state)

#define OP(r,state) (BOOST_PP_MUL(BOOST_PP_TUPLE_ELEM(2, 0, state), 2), BOOST_PP_SUB(BOOST_PP_TUPLE_ELEM(2, 1, state), 1))

#define MACRO(r,state) (state)

#define POWERSEQ(x) BOOST_PP_FOR((2,x), PRED, OP, MACRO)

#define LAST_TUPLE(x) BOOST_PP_SEQ_ELEM(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(POWERSEQ(x)),1), POWERSEQ(x))

#define POWER2(x) BOOST_PP_TUPLE_ELEM(2, 0, LAST_TUPLE(x))

POWER2(6)

I have to generate some sequence and take the last element of it and then extract the result.
I didn't find such a macro already in PP.
My code seems a bit too complicated.

Is there a more trivial way to do this?

rds,



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net