var operator^(double n, const var& v){ var out; out.id=std::pow(n,v.id); out.order=v.order; if(v.order>0){ for_each_copy(v.dTau.get()->begin(),v.dTau.get()->end(),inserter(*(out.dTau.get()),out.dTau.get()->begin()), mul_make_pair<std::pair<var*,var> ,var >, (n^(v.reduce()))*=std::log(n)); } return out; }
var tau::operator()(const var&v){ var out; out.real=mapping(v.real); for_each_copy(v.dual->begin(),v.dual->end(),inserter(*(out.dual),out.dual->begin()),mul_make_pair<std::pair<int,double> >, primitive(v.real)); return out; }