#include fp4816_t fp4816_pow(fp4816_t v,int pow) { uint8_t neg; fp4816_t calc = 1L<<16; if (!pow) return calc; if (pow < 0) { pow = -pow; neg = 1; } else { neg = 0; }; if (pow == 1) { calc = v; } else { while (pow > 0) { calc = fp4816_mul( calc, v ); pow--; }; }; if (neg) { calc = fp4816_div( 1L<<16, calc ); }; return calc; };