#include "nr.h" namespace { unsigned char lobyte(unsigned short x) {return (x & 0xff);} unsigned char hibyte(unsigned short x) {return ((x >> 8) & 0xff);} } void NR::mpadd(Vec_O_UCHR &w, Vec_I_UCHR &u, Vec_I_UCHR &v) { int j,n_min,p_min; unsigned short ireg=0; int n=u.size(); int m=v.size(); int p=w.size(); n_min=MIN(n,m); p_min=MIN(n_min,p-1); for (j=p_min-1;j>=0;j--) { ireg=u[j]+v[j]+hibyte(ireg); w[j+1]=lobyte(ireg); } w[0]=hibyte(ireg); if (p > p_min+1) for (j=p_min+1;j=0;j--) { ireg=255+u[j]-v[j]+hibyte(ireg); w[j]=lobyte(ireg); } is=hibyte(ireg)-1; if (p > p_min) for (j=p_min;j=0;j--) { ireg=u[j]+hibyte(ireg); if (j+1 < p) w[j+1]=lobyte(ireg); } w[0]=hibyte(ireg); for (j=n+1;j=0;j--) { ireg=u[j]*iv+hibyte(ireg); if (j < p-1) w[j+1]=lobyte(ireg); } w[0]=hibyte(ireg); for (j=n+1;j p_min) for (j=p_min;j=0;j--) { ireg=255-u[j]+hibyte(ireg); u[j]=lobyte(ireg); } } void NR::mpmov(Vec_O_UCHR &u, Vec_I_UCHR &v) { int j,n_min; int n=u.size(); int m=v.size(); n_min=MIN(n,m); for (j=0;j n_min) for(j=n_min;j