ref: 7ed35649bb5b7ce79c7a01f1b1d8cb850b8d388a
dir: /lib/crypto/test/ctbig.myr/
use std use crypto use testr const Nbit = 128 const main = { testr.run([ [.name="add", .fn={ctx do(ctx, crypto.ctadd, "5192296858610368357189246603769160", "5192296858534810493479828944327220", "75557863709417659441940") }], [.name="sub", .fn={ctx do(ctx, crypto.ctsub, "5192296858459252629770411284885280", "5192296858534810493479828944327220", "75557863709417659441940") }], [.name="mul", .fn={ctx do(ctx, crypto.ctmul, "392318858376010676506814412592879878824393346033951606800", "5192296858534810493479828944327220", "75557863709417659441940") }], //[.name="div", .fn={ctx // do(ctx, div, // "75557863709417659441940", // "392318858376010676506814412592879878824393346033951606800", // "5192296858534810493479828944327220") //}], //[.name="mod", .fn={ctx // do(ctx, mod, // "75557863709417659441940", // "392318858376010676506814412592879878824393346033951606800", // "5192296858534810493479828944327220") //}], //[.name="modpow", .fn={ctx // r = do(ctx, crypto.ctsub, // "5192296858459252629770411284885280" // "5192296858534810493479828944327220", // "75557863709417659441940") //}], ][:]) } //const div = {r, a, b // var z // // z = crypto.ctzero(a.nbit) // crypto.ctdivmod(r, z, a, b) //} // //const mod = {r, a, b // var z // // z = crypto.ctzero(a.nbit) // crypto.ctdivmod(z, r, a, b) //} // const do = {ctx, op, estr, astr, bstr var r, a, ai, b, bi, e, ei r = crypto.ctzero(Nbit) ei = std.get(std.bigparse(estr)) ai = std.get(std.bigparse(astr)) bi = std.get(std.bigparse(bstr)) e = crypto.big2ct(ei, Nbit) a = crypto.big2ct(ai, Nbit) b = crypto.big2ct(bi, Nbit) std.bigfree(ei) std.bigfree(ai) std.bigfree(bi) op(r, a, b) testr.eq(ctx, r, e) crypto.ctfree(r) crypto.ctfree(e) crypto.ctfree(a) crypto.ctfree(b) }