decord/source/13028_ApplyUnsignedRoundingMode.js
2026-07-21 06:55:02 +00:00

41 lines
1.5 KiB
JavaScript

// Module ID: 13028
// Function ID: 99237
// Name: ApplyUnsignedRoundingMode
// Dependencies: []
// Module 13028 (ApplyUnsignedRoundingMode)
arg5.ApplyUnsignedRoundingMode = function ApplyUnsignedRoundingMode(eq, lessThan, ZERO, result) {
if (eq.eq(lessThan)) {
return lessThan;
} else {
const concat = "x should be between r1 and r2 but x=".concat;
const combined = "x should be between r1 and r2 but x=".concat(eq, ", r1=");
const combined1 = combined.concat(lessThan, ", r2=");
lessThan(arg6[0]).invariant(lessThan.lessThan(eq) && eq.lessThan(ZERO), combined1.concat(ZERO));
if ("zero" === result) {
return lessThan;
} else if ("infinity" === result) {
return ZERO;
} else {
const minusResult = eq.minus(lessThan);
const minusResult1 = ZERO.minus(eq);
if (minusResult.lessThan(minusResult1)) {
return lessThan;
} else if (minusResult1.lessThan(minusResult)) {
return ZERO;
} else {
lessThan(arg6[0]).invariant(minusResult.eq(minusResult1), "d1 should be equal to d2");
if ("half-zero" === result) {
return lessThan;
} else if ("half-infinity" === result) {
return ZERO;
} else {
lessThan(arg6[0]).invariant("half-even" === result, "unsignedRoundingMode should be half-even");
const divResult = lessThan.div(ZERO.minus(lessThan));
return lessThan.div(ZERO.minus(lessThan)).mod(2).isZero() ? lessThan : ZERO;
}
}
}
const tmp3 = lessThan.lessThan(eq) && eq.lessThan(ZERO);
}
};