#ifndef _INC_IMATH #define _INC_IMATH void izero(unsigned int *dest,int n); void iinit(unsigned int *dest,unsigned int val,int n); void icpy(unsigned int *src,unsigned int *dest,int n); int itest(unsigned int *src,int n); int icmp1(unsigned int *src,unsigned int val,int n); int ineg(unsigned int *arg,int n); // ret = notzero void inot(unsigned int *arg,int n); int iadd(unsigned int *src1,unsigned int *src2,unsigned int *dest,int n); // ret = carry int isub(unsigned int *src,unsigned int *sub,unsigned int *dest,int n); // ret = borrow void iaddx(unsigned int val,unsigned int *dest); void isubx(unsigned int val,unsigned int *dest); void imuladd(unsigned int *src,unsigned int val,unsigned int *arg,int n); void imulsub(unsigned int *src,unsigned int val,unsigned int *arg,int n); void imul(unsigned int *src1,unsigned int *src2,unsigned int *ddest,int n); void isqr(unsigned int *src,unsigned int *ddest,int n); void imuls(unsigned int *src1,unsigned int *src2,unsigned int *ddest,int n); int icmp(unsigned int *src1,unsigned int *src2,int n); int icmps(unsigned int *src1,unsigned int *src2,int n); void ishft(unsigned int *arg,int shift,int n); // s = shift up -s = shift down void ibshft(unsigned int *arg,int shift,int n); // s = shift up -s = shift down int imulx(unsigned int *arg,int value,int addin,int n); // ret = overflow int idivx(unsigned int *arg,int div,int n); // ret = remainder int iremx(unsigned int *arg,int div,int n); // ret = remainder int iinput(char *str,unsigned int *dest,int n); int ifmt(unsigned int *src,int n,char *dest,int length,int radix); // -r = signed ret = spaces int iprnt(unsigned int *src,int n,int radix); // -r = signed int idiv(unsigned int *darg,unsigned int *div,unsigned int *res,int n); int idivs(unsigned int *darg,unsigned int *div,unsigned int *res,int n); int iaddm(unsigned int *src1,unsigned int *src2,unsigned int *mod,unsigned int *dest,int n); int imulm(unsigned int *src1,unsigned int *src2,unsigned int *mod,unsigned int *dest,int n); int iexp(unsigned int *base,unsigned int *exp,unsigned int *mod,unsigned int *dest,int n); int iinv(unsigned int *src,unsigned int *mod,unsigned int *dest,int n); // RET=1 Res = Common Factor int igcd(unsigned int *src1,unsigned int *src2,unsigned int *dest,int n); // RET=1 GCD = 1 int isqrt(unsigned int *dsrc,unsigned int *dest,int n); // User Buffer Versions 1,2,2,4,7,12,3 Buffers Required int ifmtb(unsigned int *src,int n,char *dest,int length,int radix,unsigned int *buff); // -r = signed ret = spaces int iaddmb(unsigned int *src1,unsigned int *src2,unsigned int *mod,unsigned int *dest,int n,unsigned int *buff); int imulmb(unsigned int *src1,unsigned int *src2,unsigned int *mod,unsigned int *dest,int n,unsigned int *buff); int iexpb(unsigned int *base,unsigned int *exp,unsigned int *mod,unsigned int *dest,int n,unsigned int *buff); int iinvb(unsigned int *src,unsigned int *mod,unsigned int *dest,int n,unsigned int *buff); // RET=1 Res = Common Factor int igcdb(unsigned int *src1,unsigned int *src2,unsigned int *dest,int n,unsigned int *buff); // RET=1 GCD = 1 void isqrtb(unsigned int *dsrc,unsigned int *dest,int n,unsigned int *buff); #endif