Beispiel #1
0
T pow(const T& arg, int n,const BinaryOperation<T>& binaryOperation){
	T for_return;
	if (n>0){
			std::vector<T> mass;
			mass.push_back(arg);
			int max_binary_pow=1;
			int max_pow=1;
			while(n>=2*max_pow){
				mass.push_back(binaryOperation(mass[max_binary_pow-1],mass[max_binary_pow-1]));
				max_binary_pow++;
				max_pow=max_pow*2;
			}
			while (n>0){
				if (max_pow<=n){
					for_return=binaryOperation(for_return,mass[max_binary_pow-1]);
					n=n-max_pow;
				}
				max_pow=max_pow/2;
				max_binary_pow--;
			}
		}
	else for_return=binaryOperation.normEl();
	return for_return;
};