#include #include "pdefs.h" #include "precision.h" #ifdef ASM_16BIT #include "asm16bit.h" #endif /* * Divide a precision by 2 */ precision phalf(u) register precision u; { #ifdef ASM_16BIT register precision w; register posit usize; pparm(u); usize = u->size; w = palloc(usize); if (w == pUndef) return w; w->sign = u->sign; (void) memcpy(w->value, u->value, usize * sizeof(digit)); memlsrw(w->value, usize); /* 68000 assembly language routine */ if (usize > 1 && w->value[usize-1] == (digit) 0) { /* normalize */ --(w->size); } pdestroy(u); return presult(w); #else return pdiv(u, ptwo); #endif }