@@ -745,4 +745,435 @@ An atom.
753+Core that contains arms for `bloq` and modular integer operations.
766+Produces the difference between two atoms in the modular basis
783+ ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
787+ > (~(dif fe 3) 63 64)
790+ > (~(dif fe 3) 5 10)
796+ > (~(dif fe 0) 9 10)
799+ > (~(dif fe 0) 9 11)
802+ > (~(dif fe 0) 9 12)
805+ > (~(dif fe 2) 9 12)
808+ > (~(dif fe 2) 63 64)
816+Inverts the order of the modular field.
820+`b` is a `bloq`. (see [`++bloq`](../1c))
828+ ++ inv |=(b=@ (sub (dec out) (sit b)))
855+Reverses bytes within a block.
859+`b` is a `bloq`. (see [`++bloq`](../1c))
873+ (lsh c 1 $(a c, b (cut c [0 1] b)))
874+ $(a c, b (cut c [1 1] b))
921+ 72.057.594.037.927.936
924+ 144.115.188.075.855.872
927+ 216.172.782.113.783.808
930+ 288.230.376.151.711.744
933+ 360.287.970.189.639.680
940+Produces the maximum integer value that the current block can store; `2^a^a`.
952+ ++ out (bex (bex a))
972+ \/179.769.313.486.231.590.772.930.519.078.902.473.361.797.697.894.230.657.273\/
973+ .430.081.157.732.675.805.500.963.132.708.477.322.407.536.021.120.113.879.87
974+ 1.393.357.658.789.768.814.416.622.492.847.430.639.474.124.377.767.893.424.8
975+ 65.485.276.302.219.601.246.094.119.453.082.952.085.005.768.838.150.682.342.
976+ 462.881.473.913.110.540.827.237.163.350.510.684.586.298.239.947.245.938.479
977+ .716.304.835.356.329.624.224.137.216
985+Rolls `d` to the left by `c` `b`-sized blocks.
1003+ ++ rol |= [b=bloq c=@ d=@] ^- @
1005+ =+ f=(bex (sub a b))
1007+ (sit (con (lsh b g e) (rsh b (sub f g) e)))
1011+ > `@ux`(~(rol fe 6) 4 3 0xabac.dedf.1213)
1012+ 0x1213.0000.abac.dedf
1014+ > `@ux`(~(rol fe 6) 4 2 0xabac.dedf.1213)
1015+ 0xdedf.1213.0000.abac
1017+ > `@t`(~(rol fe 5) 3 1 'dfgh')
1020+ > `@t`(~(rol fe 5) 3 2 'dfgh')
1023+ > `@t`(~(rol fe 5) 3 0 'dfgh')
1031+Rolls `d` to the right by `c` `b`-sized blocks.
1049+ ++ ror |= [b=bloq c=@ d=@] ^- @
1051+ =+ f=(bex (sub a b))
1053+ (sit (con (rsh b g e) (lsh b (sub f g) e)))
1058+ > `@ux`(~(ror fe 6) 4 1 0xabac.dedf.1213)
1059+ 0x1213.0000.abac.dedf
1061+ > `@ux`(~(ror fe 6) 3 5 0xabac.dedf.1213)
1062+ 0xacde.df12.1300.00ab
1064+ > `@ux`(~(ror fe 6) 3 3 0xabac.dedf.1213)
1065+ 0xdf12.1300.00ab.acde
1067+ > `@t`(~(rol fe 5) 3 0 'hijk')
1070+ > `@t`(~(rol fe 5) 3 1 'hijk')
1073+ > `@t`(~(rol fe 5) 3 2 'hijk')
1081+Produces an atom in the current modular block representation.
1095+ ++ sit |=(b=@ (end a 1 b))
1099+ > (~(sit fe 3) 255)
1102+ > (~(sit fe 3) 256)
1105+ > (~(sit fe 3) 257)
1108+ > (~(sit fe 2) 257)
1111+ > (~(sit fe 2) 10.000)
1114+ > (~(sit fe 2) 100)
1138+Sums two numbers in this modular field.
1154+ ++ sum |=([b=@ c=@] (sit (add b c)))
1158+ > (~(sum fe 3) 10 250)
1161+ > (~(sum fe 0) 0 1)
1164+ > (~(sum fe 0) 0 2)
1167+ > (~(sum fe 2) 14 2)
1170+ > (~(sum fe 2) 14 3)
1173+ > (~(sum fe 4) 10.000 256)
1176+ > (~(sum fe 4) 10.000 100.000)