import { S10_0, S10_1, S10_2, S10_3, S10_4, S10_5, S10_6, S10_7, S10_8, S10_9 } from "../symbol/S10.js" /** * @param { symbol } a * @param { symbol } b * @param { boolean } carry * @returns { [value: symbol, carry: boolean] } */ export function add10B(a, b, carry) { switch (a) { case S10_0: switch (b) { case S10_0: return carry ? [S10_1, false] : [S10_0, false]; case S10_1: return carry ? [S10_2, false] : [S10_1, false]; case S10_2: return carry ? [S10_3, false] : [S10_2, false]; case S10_3: return carry ? [S10_4, false] : [S10_3, false]; case S10_4: return carry ? [S10_5, false] : [S10_4, false]; case S10_5: return carry ? [S10_6, false] : [S10_5, false]; case S10_6: return carry ? [S10_7, false] : [S10_6, false]; case S10_7: return carry ? [S10_8, false] : [S10_7, false]; case S10_8: return carry ? [S10_9, false] : [S10_8, false]; case S10_9: return carry ? [S10_0, true ] : [S10_9, false]; default: throw new Error("unexpected symbol"); } case S10_1: switch (b) { case S10_0: return carry ? [S10_2, false] : [S10_1, false]; case S10_1: return carry ? [S10_3, false] : [S10_2, false]; case S10_2: return carry ? [S10_4, false] : [S10_3, false]; case S10_3: return carry ? [S10_5, false] : [S10_4, false]; case S10_4: return carry ? [S10_6, false] : [S10_5, false]; case S10_5: return carry ? [S10_7, false] : [S10_6, false]; case S10_6: return carry ? [S10_8, false] : [S10_7, false]; case S10_7: return carry ? [S10_9, false] : [S10_8, false]; case S10_8: return carry ? [S10_0, true ] : [S10_9, false]; case S10_9: return carry ? [S10_1, true ] : [S10_0, true ]; default: throw new Error("unexpected symbol"); } case S10_2: switch (b) { case S10_0: return carry ? [S10_3, false] : [S10_2, false]; case S10_1: return carry ? [S10_4, false] : [S10_3, false]; case S10_2: return carry ? [S10_5, false] : [S10_4, false]; case S10_3: return carry ? [S10_6, false] : [S10_5, false]; case S10_4: return carry ? [S10_7, false] : [S10_6, false]; case S10_5: return carry ? [S10_8, false] : [S10_7, false]; case S10_6: return carry ? [S10_9, false] : [S10_8, false]; case S10_7: return carry ? [S10_0, true ] : [S10_9, false]; case S10_8: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_9: return carry ? [S10_2, true ] : [S10_1, true ]; default: throw new Error("unexpected symbol"); } case S10_3: switch (b) { case S10_0: return carry ? [S10_4, false] : [S10_3, false]; case S10_1: return carry ? [S10_5, false] : [S10_4, false]; case S10_2: return carry ? [S10_6, false] : [S10_5, false]; case S10_3: return carry ? [S10_7, false] : [S10_6, false]; case S10_4: return carry ? [S10_8, false] : [S10_7, false]; case S10_5: return carry ? [S10_9, false] : [S10_8, false]; case S10_6: return carry ? [S10_0, true ] : [S10_9, false]; case S10_7: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_8: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_9: return carry ? [S10_3, true ] : [S10_2, true ]; default: throw new Error("unexpected symbol"); } case S10_4: switch (b) { case S10_0: return carry ? [S10_5, false] : [S10_4, false]; case S10_1: return carry ? [S10_6, false] : [S10_5, false]; case S10_2: return carry ? [S10_7, false] : [S10_6, false]; case S10_3: return carry ? [S10_8, false] : [S10_7, false]; case S10_4: return carry ? [S10_9, false] : [S10_8, false]; case S10_5: return carry ? [S10_0, true ] : [S10_9, false]; case S10_6: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_7: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_8: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_9: return carry ? [S10_4, true ] : [S10_3, true ]; default: throw new Error("unexpected symbol"); } case S10_5: switch (b) { case S10_0: return carry ? [S10_6, false] : [S10_5, false]; case S10_1: return carry ? [S10_7, false] : [S10_6, false]; case S10_2: return carry ? [S10_8, false] : [S10_7, false]; case S10_3: return carry ? [S10_9, false] : [S10_8, false]; case S10_4: return carry ? [S10_0, true ] : [S10_9, false]; case S10_5: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_6: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_7: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_8: return carry ? [S10_4, true ] : [S10_3, true ]; case S10_9: return carry ? [S10_5, true ] : [S10_4, true ]; default: throw new Error("unexpected symbol"); } case S10_6: switch (b) { case S10_0: return carry ? [S10_7, false] : [S10_6, false]; case S10_1: return carry ? [S10_8, false] : [S10_7, false]; case S10_2: return carry ? [S10_9, false] : [S10_8, false]; case S10_3: return carry ? [S10_0, true ] : [S10_9, false]; case S10_4: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_5: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_6: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_7: return carry ? [S10_4, true ] : [S10_3, true ]; case S10_8: return carry ? [S10_5, true ] : [S10_4, true ]; case S10_9: return carry ? [S10_6, true ] : [S10_5, true ]; default: throw new Error("unexpected symbol"); } case S10_7: switch (b) { case S10_0: return carry ? [S10_8, false] : [S10_7, false]; case S10_1: return carry ? [S10_9, false] : [S10_8, false]; case S10_2: return carry ? [S10_0, true ] : [S10_9, false]; case S10_3: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_4: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_5: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_6: return carry ? [S10_4, true ] : [S10_3, true ]; case S10_7: return carry ? [S10_5, true ] : [S10_4, true ]; case S10_8: return carry ? [S10_6, true ] : [S10_5, true ]; case S10_9: return carry ? [S10_7, true ] : [S10_6, true ]; default: throw new Error("unexpected symbol"); } case S10_8: switch (b) { case S10_0: return carry ? [S10_9, false] : [S10_8, false]; case S10_1: return carry ? [S10_0, true ] : [S10_9, false]; case S10_2: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_3: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_4: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_5: return carry ? [S10_4, true ] : [S10_3, true ]; case S10_6: return carry ? [S10_5, true ] : [S10_4, true ]; case S10_7: return carry ? [S10_6, true ] : [S10_5, true ]; case S10_8: return carry ? [S10_7, true ] : [S10_6, true ]; case S10_9: return carry ? [S10_8, true ] : [S10_7, true ]; default: throw new Error("unexpected symbol"); } case S10_9: switch (b) { case S10_0: return carry ? [S10_0, true ] : [S10_9, false]; case S10_1: return carry ? [S10_1, true ] : [S10_0, true ]; case S10_2: return carry ? [S10_2, true ] : [S10_1, true ]; case S10_3: return carry ? [S10_3, true ] : [S10_2, true ]; case S10_4: return carry ? [S10_4, true ] : [S10_3, true ]; case S10_5: return carry ? [S10_5, true ] : [S10_4, true ]; case S10_6: return carry ? [S10_6, true ] : [S10_5, true ]; case S10_7: return carry ? [S10_7, true ] : [S10_6, true ]; case S10_8: return carry ? [S10_8, true ] : [S10_7, true ]; case S10_9: return carry ? [S10_9, true ] : [S10_8, true ]; default: throw new Error("unexpected symbol"); } default: throw new Error("unexpected symbol"); } }