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

Function fx_BigInt_asUintN

xs/sources/xsBigInt.c:177–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

175}
176
177void fx_BigInt_asUintN(txMachine* the)
178{
179 txInteger index = (txInteger)fx_BigInt_asAux(the);
180 txBigInt* arg = fxToBigInt(the, mxArgv(1), 1);
181 txBigInt* result;
182 if (fxBigInt_iszero(arg)) {
183 result = fxBigInt_dup(the, arg);
184 }
185 else {
186 txBigInt* bits = fxBigInt_ulsl1(the, C_NULL, (txBigInt *)&gxBigIntOne, index);
187 txBigInt* mask = fxBigInt_sub(the, C_NULL, bits, (txBigInt *)&gxBigIntOne);
188 result = fxBigInt_uand(the, C_NULL, arg, mask);
189 if ((arg->sign) && !fxBigInt_iszero(result))
190 result = fxBigInt_usub(the, C_NULL, bits, result);
191 result = fxBigInt_fit(the, result);
192 }
193 mxResult->value.bigint = *result;
194 mxResult->kind = XS_BIGINT_KIND;
195// fxToBigInt(the, mxArgv(1), 1);
196// mxResult->value.bigint = *fxBigInt_mod(the, C_NULL, &mxArgv(1)->value.bigint, fxBigInt_ulsl1(the, C_NULL, (txBigInt *)&gxBigIntOne, index));
197// mxResult->kind = XS_BIGINT_KIND;
198}
199
200void fx_BigInt_bitLength(txMachine *the)
201{

Callers

nothing calls this directly

Calls 9

fx_BigInt_asAuxFunction · 0.85
fxToBigIntFunction · 0.85
fxBigInt_iszeroFunction · 0.85
fxBigInt_dupFunction · 0.85
fxBigInt_ulsl1Function · 0.85
fxBigInt_subFunction · 0.85
fxBigInt_uandFunction · 0.85
fxBigInt_usubFunction · 0.85
fxBigInt_fitFunction · 0.85

Tested by

no test coverage detected