From 0fca5fefdd81907b71845fe89f92b93a3e036cb2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 19:41:22 +0000 Subject: [PATCH 1/4] Plan port Java class to Coderive Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/4e786e09-b5ef-4abc-a69f-6bd10a56a955 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 358756 -> 358756 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source_.jar b/source_.jar index 423701782b7630b27107c5409c9a6faf77f1e5aa..61dc41c4c0fa9748e0a83c0fbe636e8e2dff1677 100644 GIT binary patch delta 13159 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 Date: Sat, 11 Apr 2026 19:42:01 +0000 Subject: [PATCH 2/4] Add Coderive AutoStackingNumber class and parity demo Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/4e786e09-b5ef-4abc-a69f-6bd10a56a955 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- .../AutoStackingNumberPortParity.cod | 48 +++++++++++++++ src/main/cod/std/math/AutoStackingNumber.cod | 59 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod create mode 100644 src/main/cod/std/math/AutoStackingNumber.cod diff --git a/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod b/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod new file mode 100644 index 00000000..198dea27 --- /dev/null +++ b/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod @@ -0,0 +1,48 @@ +unit test.autostackingnumber + +use {math.AutoStackingNumber} + +share AutoStackingNumberPortParity { + share expect(label: text, actual: int|float, expected: int|float) { + if actual == expected { + out("PASS " + label + " -> " + actual) + } else { + out("FAIL " + label + " -> actual=" + actual + ", expected=" + expected) + } + } + + share main() { + out("=== AutoStackingNumber Coderive parity ===") + + AutoStackingNumberPortParity.expect("zero", AutoStackingNumber.zero(), 0) + AutoStackingNumberPortParity.expect("one", AutoStackingNumber.one(), 1) + AutoStackingNumberPortParity.expect("minusOne", AutoStackingNumber.minusOne(), -1) + AutoStackingNumberPortParity.expect("fromLong", AutoStackingNumber.fromLong(42), 42) + AutoStackingNumberPortParity.expect("fromDouble", AutoStackingNumber.fromDouble(12.5), 12.5) + + AutoStackingNumberPortParity.expect("add-int", AutoStackingNumber.add(123456789, 987654321), 1111111110) + AutoStackingNumberPortParity.expect("subtract-int", AutoStackingNumber.subtract(987654321, 123456789), 864197532) + AutoStackingNumberPortParity.expect("multiply-int", AutoStackingNumber.multiply(12345, 3), 37035) + AutoStackingNumberPortParity.expect("divide-int", AutoStackingNumber.divide(12345, 3), 4115) + AutoStackingNumberPortParity.expect("remainder-int", AutoStackingNumber.remainder(987654321, 7), 3) + + AutoStackingNumberPortParity.expect("add-float", AutoStackingNumber.add(12.5, 3.25), 15.75) + AutoStackingNumberPortParity.expect("subtract-float", AutoStackingNumber.subtract(12.5, 3.25), 9.25) + AutoStackingNumberPortParity.expect("multiply-float", AutoStackingNumber.multiply(12.5, 3.25), 40.625) + AutoStackingNumberPortParity.expect("divide-float", AutoStackingNumber.divide(12.5, 0.5), 25) + AutoStackingNumberPortParity.expect("remainder-float", AutoStackingNumber.remainder(12.5, 0.5), 0) + + AutoStackingNumberPortParity.expect("negate", AutoStackingNumber.negate(42), -42) + AutoStackingNumberPortParity.expect("abs-positive", AutoStackingNumber.abs(42), 42) + AutoStackingNumberPortParity.expect("abs-negative", AutoStackingNumber.abs(-42), 42) + AutoStackingNumberPortParity.expect("shiftLeft", AutoStackingNumber.shiftLeft(5, 3), 40) + AutoStackingNumberPortParity.expect("shiftRight", AutoStackingNumber.shiftRight(40, 3), 5) + AutoStackingNumberPortParity.expect("compare-lt", AutoStackingNumber.compare(1, 2), -1) + AutoStackingNumberPortParity.expect("compare-eq", AutoStackingNumber.compare(2, 2), 0) + AutoStackingNumberPortParity.expect("compare-gt", AutoStackingNumber.compare(3, 2), 1) + AutoStackingNumberPortParity.expect("pow-positive", AutoStackingNumber.pow(2, 10), 1024) + AutoStackingNumberPortParity.expect("pow-negative", AutoStackingNumber.pow(2, -2), 0.25) + + out("=== parity done ===") + } +} diff --git a/src/main/cod/std/math/AutoStackingNumber.cod b/src/main/cod/std/math/AutoStackingNumber.cod new file mode 100644 index 00000000..7373e4d4 --- /dev/null +++ b/src/main/cod/std/math/AutoStackingNumber.cod @@ -0,0 +1,59 @@ +unit math + +// Coderive implementation of core AutoStackingNumber-style arithmetic helpers. +// This provides a Coderive-native class that can be compiled to CodP-TAC and loaded from .codb. +share AutoStackingNumber { + share zero() :: int|float { ~> (0) } + share one() :: int|float { ~> (1) } + share minusOne() :: int|float { ~> (-1) } + + share fromLong(value: int) :: int|float { ~> (value) } + share fromDouble(value: float) :: int|float { ~> (value) } + + share add(a: int|float, b: int|float) :: int|float { ~> (a + b) } + share subtract(a: int|float, b: int|float) :: int|float { ~> (a - b) } + share multiply(a: int|float, b: int|float) :: int|float { ~> (a * b) } + share divide(a: int|float, b: int|float) :: int|float { ~> (a / b) } + share remainder(a: int|float, b: int|float) :: int|float { ~> (a % b) } + share negate(value: int|float) :: int|float { ~> (-value) } + share abs(value: int|float) :: int|float { + if value < 0 { ~> (-value) } + ~> (value) + } + + share shiftLeft(value: int|float, bits: int) :: int|float { + if bits <= 0 { ~> (value) } + outValue: int|float = value + for i of 1 to bits { + outValue = outValue * 2 + } + ~> (outValue) + } + + share shiftRight(value: int|float, bits: int) :: int|float { + if bits <= 0 { ~> (value) } + outValue: int|float = value + for i of 1 to bits { + outValue = outValue / 2 + } + ~> (outValue) + } + + share compare(a: int|float, b: int|float) :: int|float { + if a < b { ~> (-1) } + if a > b { ~> (1) } + ~> (0) + } + + share pow(value: int|float, exponent: int) :: int|float { + if exponent == 0 { ~> (1) } + if exponent < 0 { + ~> (1 / AutoStackingNumber.pow(value, -exponent)) + } + outValue: int|float = 1 + for i of 1 to exponent { + outValue = outValue * value + } + ~> (outValue) + } +} From 62a18ed7f28186c835a6f06a432e114303734d39 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 19:45:21 +0000 Subject: [PATCH 3/4] Finalize AutoStackingNumber parity test and compiled artifacts Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/4e786e09-b5ef-4abc-a69f-6bd10a56a955 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- .../demo/src/bin/math/AutoStackingNumber.codb | Bin 0 -> 48242 bytes .../AutoStackingNumberPortParity.codb | Bin 0 -> 60130 bytes .../demo/src/idx/test.autostackingnumber.toml | 8 +++ .../AutoStackingNumberPortParity.cod | 66 +++++++++--------- 4 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 src/main/cod/demo/src/bin/math/AutoStackingNumber.codb create mode 100644 src/main/cod/demo/src/bin/test.autostackingnumber/AutoStackingNumberPortParity.codb create mode 100644 src/main/cod/demo/src/idx/test.autostackingnumber.toml diff --git a/src/main/cod/demo/src/bin/math/AutoStackingNumber.codb b/src/main/cod/demo/src/bin/math/AutoStackingNumber.codb new file mode 100644 index 0000000000000000000000000000000000000000..98cbadd78c468e6885f05c0afb60144da433faff GIT binary patch literal 48242 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 OVp)Q4ZSEC=K>r8b--I*( literal 0 HcmV?d00001 diff --git a/src/main/cod/demo/src/bin/test.autostackingnumber/AutoStackingNumberPortParity.codb b/src/main/cod/demo/src/bin/test.autostackingnumber/AutoStackingNumberPortParity.codb new file mode 100644 index 0000000000000000000000000000000000000000..f3ef6060067012a94d4b3171c99a49be4f8e3a21 GIT binary patch literal 60130 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 ULYLU!!2d^q3Hs3aEmlMO9}tY5TL1t6 literal 0 HcmV?d00001 diff --git a/src/main/cod/demo/src/idx/test.autostackingnumber.toml b/src/main/cod/demo/src/idx/test.autostackingnumber.toml new file mode 100644 index 00000000..b5b3f69f --- /dev/null +++ b/src/main/cod/demo/src/idx/test.autostackingnumber.toml @@ -0,0 +1,8 @@ +# unit test.autostackingnumber +timestamp = "1775936694798" +generator = "Coderive 1.0" + +[classes] +AutoStackingNumberComprehensive = "AutoStackingNumberComprehensive.cod" +AutoStackingNumberEdgeCases = "AutoStackingNumberEdgeCases.cod" +AutoStackingNumberPortParity = "AutoStackingNumberPortParity.cod" diff --git a/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod b/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod index 198dea27..a1034b08 100644 --- a/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod +++ b/src/main/cod/demo/src/main/test/autostackingnumber/AutoStackingNumberPortParity.cod @@ -1,47 +1,49 @@ unit test.autostackingnumber -use {math.AutoStackingNumber} +use {math} share AutoStackingNumberPortParity { share expect(label: text, actual: int|float, expected: int|float) { - if actual == expected { - out("PASS " + label + " -> " + actual) + actualText := "" + actual + expectedText := "" + expected + if actualText == expectedText { + out("PASS " + label + " -> " + actualText) } else { - out("FAIL " + label + " -> actual=" + actual + ", expected=" + expected) + out("FAIL " + label + " -> actual=" + actualText + ", expected=" + expectedText) } } share main() { out("=== AutoStackingNumber Coderive parity ===") - AutoStackingNumberPortParity.expect("zero", AutoStackingNumber.zero(), 0) - AutoStackingNumberPortParity.expect("one", AutoStackingNumber.one(), 1) - AutoStackingNumberPortParity.expect("minusOne", AutoStackingNumber.minusOne(), -1) - AutoStackingNumberPortParity.expect("fromLong", AutoStackingNumber.fromLong(42), 42) - AutoStackingNumberPortParity.expect("fromDouble", AutoStackingNumber.fromDouble(12.5), 12.5) - - AutoStackingNumberPortParity.expect("add-int", AutoStackingNumber.add(123456789, 987654321), 1111111110) - AutoStackingNumberPortParity.expect("subtract-int", AutoStackingNumber.subtract(987654321, 123456789), 864197532) - AutoStackingNumberPortParity.expect("multiply-int", AutoStackingNumber.multiply(12345, 3), 37035) - AutoStackingNumberPortParity.expect("divide-int", AutoStackingNumber.divide(12345, 3), 4115) - AutoStackingNumberPortParity.expect("remainder-int", AutoStackingNumber.remainder(987654321, 7), 3) - - AutoStackingNumberPortParity.expect("add-float", AutoStackingNumber.add(12.5, 3.25), 15.75) - AutoStackingNumberPortParity.expect("subtract-float", AutoStackingNumber.subtract(12.5, 3.25), 9.25) - AutoStackingNumberPortParity.expect("multiply-float", AutoStackingNumber.multiply(12.5, 3.25), 40.625) - AutoStackingNumberPortParity.expect("divide-float", AutoStackingNumber.divide(12.5, 0.5), 25) - AutoStackingNumberPortParity.expect("remainder-float", AutoStackingNumber.remainder(12.5, 0.5), 0) - - AutoStackingNumberPortParity.expect("negate", AutoStackingNumber.negate(42), -42) - AutoStackingNumberPortParity.expect("abs-positive", AutoStackingNumber.abs(42), 42) - AutoStackingNumberPortParity.expect("abs-negative", AutoStackingNumber.abs(-42), 42) - AutoStackingNumberPortParity.expect("shiftLeft", AutoStackingNumber.shiftLeft(5, 3), 40) - AutoStackingNumberPortParity.expect("shiftRight", AutoStackingNumber.shiftRight(40, 3), 5) - AutoStackingNumberPortParity.expect("compare-lt", AutoStackingNumber.compare(1, 2), -1) - AutoStackingNumberPortParity.expect("compare-eq", AutoStackingNumber.compare(2, 2), 0) - AutoStackingNumberPortParity.expect("compare-gt", AutoStackingNumber.compare(3, 2), 1) - AutoStackingNumberPortParity.expect("pow-positive", AutoStackingNumber.pow(2, 10), 1024) - AutoStackingNumberPortParity.expect("pow-negative", AutoStackingNumber.pow(2, -2), 0.25) + AutoStackingNumberPortParity.expect("zero", math.AutoStackingNumber.zero(), 0) + AutoStackingNumberPortParity.expect("one", math.AutoStackingNumber.one(), 1) + AutoStackingNumberPortParity.expect("minusOne", math.AutoStackingNumber.minusOne(), -1) + AutoStackingNumberPortParity.expect("fromLong", math.AutoStackingNumber.fromLong(42), 42) + AutoStackingNumberPortParity.expect("fromDouble", math.AutoStackingNumber.fromDouble(12.5), 12.5) + + AutoStackingNumberPortParity.expect("add-int", math.AutoStackingNumber.add(123456789, 987654321), 1111111110) + AutoStackingNumberPortParity.expect("subtract-int", math.AutoStackingNumber.subtract(987654321, 123456789), 864197532) + AutoStackingNumberPortParity.expect("multiply-int", math.AutoStackingNumber.multiply(12345, 3), 37035) + AutoStackingNumberPortParity.expect("divide-int", math.AutoStackingNumber.divide(12345, 3), 4115) + AutoStackingNumberPortParity.expect("remainder-int", math.AutoStackingNumber.remainder(987654321, 7), 3) + + AutoStackingNumberPortParity.expect("add-float", math.AutoStackingNumber.add(12.5, 3.25), 15.75) + AutoStackingNumberPortParity.expect("subtract-float", math.AutoStackingNumber.subtract(12.5, 3.25), 9.25) + AutoStackingNumberPortParity.expect("multiply-float", math.AutoStackingNumber.multiply(12.5, 3.25), 40.625) + AutoStackingNumberPortParity.expect("divide-float", math.AutoStackingNumber.divide(12.5, 0.5), 25) + AutoStackingNumberPortParity.expect("remainder-float", math.AutoStackingNumber.remainder(12.5, 0.5), 0) + + AutoStackingNumberPortParity.expect("negate", math.AutoStackingNumber.negate(42), -42) + AutoStackingNumberPortParity.expect("abs-positive", math.AutoStackingNumber.abs(42), 42) + AutoStackingNumberPortParity.expect("abs-negative", math.AutoStackingNumber.abs(-42), 42) + AutoStackingNumberPortParity.expect("shiftLeft", math.AutoStackingNumber.shiftLeft(5, 3), 40) + AutoStackingNumberPortParity.expect("shiftRight", math.AutoStackingNumber.shiftRight(40, 3), 5) + AutoStackingNumberPortParity.expect("compare-lt", math.AutoStackingNumber.compare(1, 2), -1) + AutoStackingNumberPortParity.expect("compare-eq", math.AutoStackingNumber.compare(2, 2), 0) + AutoStackingNumberPortParity.expect("compare-gt", math.AutoStackingNumber.compare(3, 2), 1) + AutoStackingNumberPortParity.expect("pow-positive", math.AutoStackingNumber.pow(2, 10), 1024) + AutoStackingNumberPortParity.expect("pow-negative", math.AutoStackingNumber.pow(2, -2), 0.25) out("=== parity done ===") } From 6f9c5e91f68544d097e6252b4094a02b28276318 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 19:46:09 +0000 Subject: [PATCH 4/4] Clarify arithmetic shift semantics in Coderive AutoStackingNumber Agent-Logs-Url: https://github.com/DanexCodr/Coderive/sessions/4e786e09-b5ef-4abc-a69f-6bd10a56a955 Co-authored-by: DanexCodr <216312766+DanexCodr@users.noreply.github.com> --- source_.jar | Bin 358756 -> 373999 bytes .../AutoStackingNumberPortParity.codb | Bin 60130 -> 60131 bytes src/main/cod/std/math/AutoStackingNumber.cod | 2 ++ 3 files changed, 2 insertions(+) diff --git a/source_.jar b/source_.jar index 61dc41c4c0fa9748e0a83c0fbe636e8e2dff1677..85868e7eab0ee2fefefa51133cf73da97beb8b06 100644 GIT binary patch delta 19843 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 delta 251 zcmaESmHE+C<_(?8)c1s17@UzQe!{@OAl)ug@hH$+aZ;B|#Y(wc>$}sqVt#Wn8h1B3 zs!l$*JaE(UWNc|%ADX)(mYII!BK4n4Yli7Tm1vh*=+Ib-IL)7HS zf%5}4%bm+*R=<|KUZgww(IJqAg}wYsOYeyPSkue@&gvKM_6@VOcPh^ae*CG81FV7R zQa+d3|HP|IDifZo0yRjvb$sDUUM70cyW@+aP6PkE@Oc*m6Q4)Sb#4Z$e{n~UOD)rM ux|Q9QxwRnma-S{;L_cwK7yfi1TI5hP2mg~VoY9}cqCEb9)fYT3W(EMwqHv)A diff --git a/src/main/cod/std/math/AutoStackingNumber.cod b/src/main/cod/std/math/AutoStackingNumber.cod index 7373e4d4..98df56b8 100644 --- a/src/main/cod/std/math/AutoStackingNumber.cod +++ b/src/main/cod/std/math/AutoStackingNumber.cod @@ -21,6 +21,7 @@ share AutoStackingNumber { ~> (value) } + // Arithmetic shift helper: multiplies by 2^bits (not bit-level integer shifting). share shiftLeft(value: int|float, bits: int) :: int|float { if bits <= 0 { ~> (value) } outValue: int|float = value @@ -30,6 +31,7 @@ share AutoStackingNumber { ~> (outValue) } + // Arithmetic shift helper: divides by 2^bits (not bit-level integer shifting). share shiftRight(value: int|float, bits: int) :: int|float { if bits <= 0 { ~> (value) } outValue: int|float = value