//--------------------------------------------------------------------------
// Author: Thomas Nowotny
//
// Institute: Institut fuer Theoretische Physik
// Augustusplatz 10-11
// 04109 Leipzig
//
// email to: nowotny@itp.uni-leipzig.de
//
// initial version: 2/00
// last change: 2/00
//--------------------------------------------------------------------------
#include "power_of_two.h"
template <class type>
power_of_two<type>::power_of_two()
{
LBitSize= sizeof(type)*8;
tp= new type[LBitSize];
tp[0]= 1;
for (int i= 0; i < LBitSize-1; i++)
{
tp[i+1]= tp[i]*2;
}
}
template <class type>
power_of_two<type>::~power_of_two()
{
delete[] tp;
}
template <class type>
inline type power_of_two<type>::operator[](short i)
{
return tp[i];
}
template <class type>
inv_power_of_two<type>::inv_power_of_two()
{
LBitSize= sizeof(type)*8;
tp= new type[LBitSize];
tp[LBitSize-1]= 1;
for (int i= LBitSize-1; i > 0; i--)
{
tp[i-1]= tp[i]*2;
}
}
template <class type>
inv_power_of_two<type>::~inv_power_of_two()
{
delete[] tp;
}
template <class type>
inline type inv_power_of_two<type>::operator[](short i)
{
return tp[i];
}
power_of_two<ulong> twopow;
inv_power_of_two<ulong> invtp;
power_of_two<int> pow2int;
power_of_two<long> pow2long;
power_of_two<long double> pow2ld;