MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxBigInt_usub

Function fxBigInt_usub

xs/sources/xsBigInt.c:1493–1544  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1491}
1492
1493txBigInt *fxBigInt_usub(txMachine* the, txBigInt *rr, txBigInt *aa, txBigInt *bb)
1494{
1495 int i, n;
1496 txU4 a, b, r, t;
1497 txU4 *ap, *bp, *rp;
1498 txU4 c = 0;
1499
1500 if (rr == NULL)
1501 rr = fxBigInt_alloc(the, MAX(aa->size, bb->size));
1502 rr->sign = (aa->size < bb->size ||
1503 (aa->size == bb->size && fxBigInt_ucomp(aa, bb) < 0));
1504 if (rr->sign) {
1505 txBigInt *tt = aa;
1506 aa = bb;
1507 bb = tt;
1508 }
1509 ap = aa->data;
1510 bp = bb->data;
1511 rp = rr->data;
1512 n = MIN(aa->size, bb->size);
1513 for (i = 0; i < n; i++) {
1514 a = ap[i];
1515 b = bp[i];
1516 t = a - b;
1517 r = t - c;
1518 rp[i] = r;
1519 c = a < b || r > t;
1520 }
1521 if (aa->size >= bb->size) {
1522 n = aa->size;
1523 for (; i < n; i++) {
1524 t = ap[i];
1525 r = t - c;
1526 rp[i] = r;
1527 c = r > t;
1528 }
1529 }
1530 else {
1531 n = bb->size;
1532 for (; i < n; i++) {
1533 t = 0 - bp[i];
1534 r = t - c;
1535 rp[i] = r;
1536 c = r > t;
1537 }
1538 }
1539 /* remove leading 0s */
1540 while (--i > 0 && rp[i] == 0)
1541 ;
1542 rr->size = i + 1;
1543 return(rr);
1544}
1545
1546txBigInt *fxBigInt_mul(txMachine* the, txBigInt *rr, txBigInt *aa, txBigInt *bb)
1547{

Callers 9

fx_BigInt_asIntNFunction · 0.85
fx_BigInt_asUintNFunction · 0.85
fxBigInt_notFunction · 0.85
fxBigInt_andFunction · 0.85
fxBigInt_orFunction · 0.85
fxBigInt_xorFunction · 0.85
fxBigInt_addFunction · 0.85
fxBigInt_subFunction · 0.85
fxBigInt_udivFunction · 0.85

Calls 2

fxBigInt_allocFunction · 0.85
fxBigInt_ucompFunction · 0.85

Tested by

no test coverage detected