|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 727 (0x2d7) Types: TextFile Notes: UNIX file Names: »mneg.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦f4b8d8c84⟧ UNIX Filesystem └─ ⟦this⟧ »libmp/mneg.c«
#include "mprec.h" #include <assert.h> /* * Mneg sets the mint pointed to by "b" to negative 1 times the * mint pointed to by "a". Note that "a" == "b" is permissable. */ void mneg(a, b) mint *a, *b; { register char *ap, *rp; register unsigned count; mint res; int mifl; /* allocate result space */ mifl = ispos(a); res.len = a->len; if (mifl) ++res.len; res.val = (char *)mpalc(res.len); /* negate and copy */ ap = a->val; rp = res.val; count = a->len; while (count-- > 0) *rp++ = NEFL - *ap++; if (mifl) *rp = NEFL; ++*res.val; assert(ap == a->val + a->len); assert(rp == res.val + res.len - (mifl ? 1 : 0)); norm(&res); /* replace old value of b with res */ mpfree(b->val); *b = res; }