import { S8_0, S8_1, S8_2, S8_3, S8_4, S8_5, S8_6, S8_7 } from "../symbol/S8.js" /** * @param { symbol } a * @param { symbol } b * @param { boolean } carry * @returns { [value: symbol, carry: boolean] } */ export function add8B(a, b, carry) { switch (a) { case S8_0: switch (b) { case S8_0: return carry ? [S8_1, false] : [S8_0, false]; case S8_1: return carry ? [S8_2, false] : [S8_1, false]; case S8_2: return carry ? [S8_3, false] : [S8_2, false]; case S8_3: return carry ? [S8_4, false] : [S8_3, false]; case S8_4: return carry ? [S8_5, false] : [S8_4, false]; case S8_5: return carry ? [S8_6, false] : [S8_5, false]; case S8_6: return carry ? [S8_7, false] : [S8_6, false]; case S8_7: return carry ? [S8_0, true ] : [S8_7, false]; default: throw new Error("unexpected symbol"); } case S8_1: switch (b) { case S8_0: return carry ? [S8_2, false] : [S8_1, false]; case S8_1: return carry ? [S8_3, false] : [S8_2, false]; case S8_2: return carry ? [S8_4, false] : [S8_3, false]; case S8_3: return carry ? [S8_5, false] : [S8_4, false]; case S8_4: return carry ? [S8_6, false] : [S8_5, false]; case S8_5: return carry ? [S8_7, false] : [S8_6, false]; case S8_6: return carry ? [S8_0, true ] : [S8_7, false]; case S8_7: return carry ? [S8_1, true ] : [S8_0, true ]; default: throw new Error("unexpected symbol"); } case S8_2: switch (b) { case S8_0: return carry ? [S8_3, false] : [S8_2, false]; case S8_1: return carry ? [S8_4, false] : [S8_3, false]; case S8_2: return carry ? [S8_5, false] : [S8_4, false]; case S8_3: return carry ? [S8_6, false] : [S8_5, false]; case S8_4: return carry ? [S8_7, false] : [S8_6, false]; case S8_5: return carry ? [S8_0, true ] : [S8_7, false]; case S8_6: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_7: return carry ? [S8_2, true ] : [S8_1, true ]; default: throw new Error("unexpected symbol"); } case S8_3: switch (b) { case S8_0: return carry ? [S8_4, false] : [S8_3, false]; case S8_1: return carry ? [S8_5, false] : [S8_4, false]; case S8_2: return carry ? [S8_6, false] : [S8_5, false]; case S8_3: return carry ? [S8_7, false] : [S8_6, false]; case S8_4: return carry ? [S8_0, true ] : [S8_7, false]; case S8_5: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_6: return carry ? [S8_2, true ] : [S8_1, true ]; case S8_7: return carry ? [S8_3, true ] : [S8_2, true ]; default: throw new Error("unexpected symbol"); } case S8_4: switch (b) { case S8_0: return carry ? [S8_5, false] : [S8_4, false]; case S8_1: return carry ? [S8_6, false] : [S8_5, false]; case S8_2: return carry ? [S8_7, false] : [S8_6, false]; case S8_3: return carry ? [S8_0, true ] : [S8_7, false]; case S8_4: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_5: return carry ? [S8_2, true ] : [S8_1, true ]; case S8_6: return carry ? [S8_3, true ] : [S8_2, true ]; case S8_7: return carry ? [S8_4, true ] : [S8_3, true ]; default: throw new Error("unexpected symbol"); } case S8_5: switch (b) { case S8_0: return carry ? [S8_6, false] : [S8_5, false]; case S8_1: return carry ? [S8_7, false] : [S8_6, false]; case S8_2: return carry ? [S8_0, true ] : [S8_7, false]; case S8_3: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_4: return carry ? [S8_2, true ] : [S8_1, true ]; case S8_5: return carry ? [S8_3, true ] : [S8_2, true ]; case S8_6: return carry ? [S8_4, true ] : [S8_3, true ]; case S8_7: return carry ? [S8_5, true ] : [S8_4, true ]; default: throw new Error("unexpected symbol"); } case S8_6: switch (b) { case S8_0: return carry ? [S8_7, false] : [S8_6, false]; case S8_1: return carry ? [S8_0, true ] : [S8_7, false]; case S8_2: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_3: return carry ? [S8_2, true ] : [S8_1, true ]; case S8_4: return carry ? [S8_3, true ] : [S8_2, true ]; case S8_5: return carry ? [S8_4, true ] : [S8_3, true ]; case S8_6: return carry ? [S8_5, true ] : [S8_4, true ]; case S8_7: return carry ? [S8_6, true ] : [S8_5, true ]; default: throw new Error("unexpected symbol"); } case S8_7: switch (b) { case S8_0: return carry ? [S8_0, true ] : [S8_7, false]; case S8_1: return carry ? [S8_1, true ] : [S8_0, true ]; case S8_2: return carry ? [S8_2, true ] : [S8_1, true ]; case S8_3: return carry ? [S8_3, true ] : [S8_2, true ]; case S8_4: return carry ? [S8_4, true ] : [S8_3, true ]; case S8_5: return carry ? [S8_5, true ] : [S8_4, true ]; case S8_6: return carry ? [S8_6, true ] : [S8_5, true ]; case S8_7: return carry ? [S8_7, true ] : [S8_6, true ]; default: throw new Error("unexpected symbol"); } default: throw new Error("unexpected symbol"); } }