diff options
Diffstat (limited to 'sys/src/cmd/unix/drawterm/libmp/mptov.c')
-rw-r--r-- | sys/src/cmd/unix/drawterm/libmp/mptov.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/sys/src/cmd/unix/drawterm/libmp/mptov.c b/sys/src/cmd/unix/drawterm/libmp/mptov.c deleted file mode 100644 index fd371d82a..000000000 --- a/sys/src/cmd/unix/drawterm/libmp/mptov.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "os.h" -#include <mp.h> -#include "dat.h" - -#define VLDIGITS (sizeof(vlong)/sizeof(mpdigit)) - -/* - * this code assumes that a vlong is an integral number of - * mpdigits long. - */ -mpint* -vtomp(vlong v, mpint *b) -{ - int s; - uvlong uv; - - if(b == nil) - b = mpnew(VLDIGITS*sizeof(mpdigit)); - else - mpbits(b, VLDIGITS*sizeof(mpdigit)); - mpassign(mpzero, b); - if(v == 0) - return b; - if(v < 0){ - b->sign = -1; - uv = -v; - } else - uv = v; - for(s = 0; s < VLDIGITS && uv != 0; s++){ - b->p[s] = uv; - uv >>= sizeof(mpdigit)*8; - } - b->top = s; - return b; -} - -vlong -mptov(mpint *b) -{ - uvlong v; - int s; - - if(b->top == 0) - return (vlong) 0; - - mpnorm(b); - if(b->top > VLDIGITS){ - if(b->sign > 0) - return (vlong)MAXVLONG; - else - return (vlong)MINVLONG; - } - - v = (uvlong) 0; - for(s = 0; s < b->top; s++) - v |= b->p[s]<<(s*sizeof(mpdigit)*8); - - if(b->sign > 0){ - if(v > MAXVLONG) - v = MAXVLONG; - } else { - if(v > MINVLONG) - v = MINVLONG; - else - v = -(vlong)v; - } - - return (vlong)v; -} |