←2022-10-21 2022-10-22 2022-10-23→ ↑2022 ↑all
00:58:49 <esolangs> [[Burgeria]] https://esolangs.org/w/index.php?diff=104136&oldid=103956 * Dtp09 * (+98) /* Conditionals */
01:12:32 -!- Lord_of_Life has quit (Ping timeout: 260 seconds).
01:12:52 -!- Lord_of_Life has joined.
02:44:20 <esolangs> [[10Brainfuck]] https://esolangs.org/w/index.php?diff=104137&oldid=68495 * Esolang1 * (+159) Fixed python program
02:53:02 <esolangs> [[10Brainfuck]] https://esolangs.org/w/index.php?diff=104138&oldid=104137 * Esolang1 * (+2)
03:18:34 <esolangs> [[13 bytes :D]] N https://esolangs.org/w/index.php?oldid=104139 * Esolang1 * (+870) Created new page: 13 bytes :D
03:19:29 <esolangs> [[13 bytes :D]] M https://esolangs.org/w/index.php?diff=104140&oldid=104139 * Esolang1 * (+0) Fixed typos: Creator and Name
03:19:53 <esolangs> [[13 bytes :D]] M https://esolangs.org/w/index.php?diff=104141&oldid=104140 * Esolang1 * (+0) Fixed typos: Creator and Name
03:20:30 <esolangs> [[User:Esolang1]] M https://esolangs.org/w/index.php?diff=104142&oldid=101671 * Esolang1 * (+10) Added language: 13 bytes :D
03:26:38 <esolangs> [[Joke language list]] M https://esolangs.org/w/index.php?diff=104143&oldid=103898 * Esolang1 * (+46) Added language: 13 bytes :D
03:50:17 <esolangs> [[HQ9+: Functional Edition]] https://esolangs.org/w/index.php?diff=104144&oldid=103901 * BoundedBeans * (+76)
05:30:27 -!- j4cbo has quit (*.net *.split).
05:30:37 -!- j4cbo has joined.
05:53:57 -!- shikhin has quit (*.net *.split).
05:53:57 -!- Riviera has quit (*.net *.split).
05:54:08 -!- Riviera has joined.
05:54:11 -!- shikhin has joined.
06:45:55 -!- razetime has joined.
07:30:08 -!- tromp has joined.
07:50:33 -!- shikhin has changed hostmask to ~shikhin@offtopia/offtopian.
07:52:55 -!- Sgeo has quit (Read error: Connection reset by peer).
07:53:33 -!- Sgeo has joined.
07:55:56 <esolangs> [[Welcome to Esolang, the esoteric programming languages wiki!]] https://esolangs.org/w/index.php?diff=104145&oldid=103049 * Username1234 * (+5) /* Hello World */
07:56:35 <esolangs> [[Welcome to Esolang, the esoteric programming languages wiki!]] https://esolangs.org/w/index.php?diff=104146&oldid=104145 * Username1234 * (-22) /* Operations */
07:56:44 <esolangs> [[Welcome to Esolang, the esoteric programming languages wiki!]] https://esolangs.org/w/index.php?diff=104147&oldid=104146 * Username1234 * (-5) /* Hello World */
09:21:27 -!- tech_exorcist has joined.
09:23:07 -!- razetime has quit (Ping timeout: 260 seconds).
09:35:12 -!- tech_exorcist has quit (Remote host closed the connection).
09:37:10 -!- tech_exorcist has joined.
09:50:10 <esolangs> [[Random Brainfuck]] https://esolangs.org/w/index.php?diff=104148&oldid=43005 * Kaveh Yousefi * (+3045) Added an implementation in Common Lisp.
09:50:31 <esolangs> [[Random Brainfuck]] https://esolangs.org/w/index.php?diff=104149&oldid=104148 * Kaveh Yousefi * (+54) Added categories to the page.
09:52:32 -!- jix has quit (Quit: quit).
09:52:40 -!- jix has joined.
10:04:52 -!- sprout has quit (Ping timeout: 268 seconds).
10:35:41 -!- __monty__ has joined.
11:13:18 -!- razetime has joined.
11:27:16 <esolangs> [[ABPLWNL but with stack]] https://esolangs.org/w/index.php?diff=104150&oldid=104135 * Mario0Fan * (+0)
11:58:28 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:49:17 -!- razetime has quit (Ping timeout: 276 seconds).
13:31:36 -!- tromp has joined.
14:35:01 -!- razetime has joined.
14:59:35 -!- sprout has joined.
15:56:34 -!- tech_exorcist has quit (Quit: Disconnecting).
16:04:24 -!- tech_exorcist has joined.
16:17:57 <b_jonas> hmm, if Unicode has only 17 planes (because that's how much UTF-16-M can encode), while D&D has 17 alignment planes plus lots of other planes, then why are two unicode planes named of the astral plane and the base material plane, which aren't among the 17 alignment planes? do some of the alignment planes not get used as names for unicode planes?
16:22:53 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:23:16 <Luci-ghoule> ..I never thought about it, but is the Unicode plane _actually_ named after the D&D plane?
16:23:58 <Luci-ghoule> I wouldn't entirely rule it out given how the unicode consortium seems to be a bunch of nerds :p
16:26:20 -!- chiselfuse has quit (Remote host closed the connection).
16:26:35 -!- chiselfuse has joined.
16:29:03 <b_jonas> though maybe that doesn't work because all of unicode is lawful, except for the private use areas which are chaotic
16:30:10 <b_jonas> Luci-ghoule: not actually. plane 0 of unicode is actually called "base multilingual plane" rather than "base material plane", and I think the D&D plane is called "prime material plane"; and "astral plane" for unicode is just a nickname
16:30:22 <b_jonas> https://en.wikipedia.org/wiki/Plane_(Unicode) gives the actual official plane names
16:31:06 <Luci-ghoule> aww
16:31:18 <Luci-ghoule> curious about the etymology for the nickname though
16:32:59 <b_jonas> and apparently "astral" isn't even any one plane, it's the nickname for all the planes other than base material plane.
16:33:04 <b_jonas> in unicode that is
16:52:30 -!- tromp has joined.
17:13:39 -!- razetime has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.).
17:36:03 -!- lagash has quit (Quit: ZNC - https://znc.in).
17:37:12 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:37:45 -!- lagash has joined.
17:58:11 -!- tromp has joined.
18:12:02 <esolangs> [[User:SirBrahms]] https://esolangs.org/w/index.php?diff=104151&oldid=100306 * SirBrahms * (+45)
18:41:59 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:54:24 -!- tromp has joined.
19:09:22 <esolangs> [[]] N https://esolangs.org/w/index.php?oldid=104152 * Hakerh400 * (+2239) +[[]]
19:09:47 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=104153&oldid=104078 * Hakerh400 * (+21) +[[]]
19:09:59 <esolangs> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=104154&oldid=104079 * Hakerh400 * (+21) +[[]]
19:10:25 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:19:03 <esolangs> [[]] M https://esolangs.org/w/index.php?diff=104155&oldid=104152 * Hakerh400 * (-19)
19:21:22 -!- tromp has joined.
19:37:35 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:48:54 -!- tromp has joined.
20:05:37 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:21:37 -!- tromp has joined.
20:38:05 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:50:43 -!- tech_exorcist has quit (Quit: Disconnecting).
20:52:41 -!- tromp has joined.
21:02:50 <int-e> b_jonas: the bash thing got fixed (to delay closing those FDs until after the loop) according to https://savannah.gnu.org/support/?110743 :)
21:35:17 <esolangs> [[13 bytes :D]] M https://esolangs.org/w/index.php?diff=104156&oldid=104141 * PythonshellDebugwindow * (+19) /* Examples */ Category
21:58:17 <esolangs> [[DetailedFuck]] https://esolangs.org/w/index.php?diff=104157&oldid=97065 * Kaveh Yousefi * (-135) Rectified the Hello World! example, which would enter in an infinitely repeating loop, and added an infinite cat program.
22:01:26 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:10:57 -!- __monty__ has quit (Quit: leaving).
22:34:19 -!- b_jonas has quit (Read error: Connection reset by peer).
22:37:00 -!- b_jonas has joined.
22:37:15 <b_jonas> the heck? computer froze on me again
22:37:45 <int-e> I didn't do anything
22:38:04 <int-e> maybe time to let memtest run overnight?
22:38:35 <shachaf> zzo38: Were you the one who liked MMIX's MXOR instruction? Did I mention that Intel added that to x86?
22:39:10 <int-e> what's that, the carry-less multiplication?
22:39:13 <b_jonas> shachaf: ooh, what's its name?
22:39:15 <b_jonas> int-e: no
22:39:39 <b_jonas> int-e: multiplying 8x8 GF(2) matrixes with the coefficients packed into a 64-bit integer
22:39:45 * int-e looks
22:39:57 <b_jonas> and yes, that was zzo38
22:40:23 <int-e> that's cool too
22:40:36 <int-e> shachaf: do we get MOR too?
22:40:56 <int-e> (I guess that's less interesting for most people)
22:41:19 <b_jonas> what? no, MOR seems to be more general
22:41:21 <shachaf> b_jonas: https://www.felixcloutier.com/x86/gf2p8affineqb
22:41:32 <shachaf> No MOR as far as I know.
22:41:42 <shachaf> And even this one is only in GFNI which I think is still pretty rare.
22:42:04 <int-e> (MOR is a relation product; MXOR is a matrix product over GF(2) which I /know/ has applications in cryptography at least)
22:42:16 <shachaf> Hmm, this is only matrix-vector multiplication, did MXOR do matrix-matrix?
22:42:39 <shachaf> I guess it has SIMD matrix-vector multiplication so you can probably emulate it.
22:42:42 <int-e> yes. http://mmix.cs.hm.edu/doc/instructions-en.html
22:42:54 <zzo38> shachaf: Yes, I was the one who liked MMIX's MOR and MXOR instructions (I think MOR is usually more useful in my opinion, but MXOR is also useful). I did not konw that Intel added it to x86. As far as I know it was not added to RISC-V, although I added a message that they should add it but I think they have not done that yet.
22:43:01 <shachaf> Right, OK, I forgot what MXOR actually was.
22:43:18 <zzo38> (but for some uses, MOR and MXOR are both just as good)
22:44:20 <shachaf> Why is MOR more useful?
22:45:09 <b_jonas> shachaf: I'm not convinced that that actually computes MXOR, let me try to understand the manual
22:45:14 <zzo38> Well, at least the things I have considered using for, I have found MOR to be more useful, although I have not considered everything, so probably MXOR is just as useful, but for different purposes (although some things can use either one, as I have mentioned)
22:45:20 <int-e> shachaf: intel's thing it should do matrix products, shouldn't it? since it can transform several 8-bit vectors at once... that's one way to look at a matrix product
22:45:30 <int-e> unless I'm misreading
22:45:42 <b_jonas> I thought we figured the last time that it was another of the like four different instructions to compute multiplication in some representation of GF(2^8)
22:45:44 <int-e> I don't think I am.
22:47:00 <zzo38> Will command __builtin_mor and __builtin_mxor be added into GCC, or @llvm.mor and @llvm.mxor into LLVM? If using in GCC should also have some definition that can be checked with #ifdef if the target computer supports such an instruction.
22:47:03 <shachaf> int-e: Right, that's what I meant, I was just being kind of silly wondering whether you need to do any fancy SIMD thing to get it back to the form you want it in.
22:47:20 <shachaf> But actually it's already in the form you want it in.
22:48:08 <shachaf> b_jonas: Wait, am I extremely confused? Is this not MXOR?
22:48:28 <shachaf> (Plus an affine immediate that you can ignore if you want.)
22:48:52 <int-e> and wider matrices... and /maybe/ a transposition?
22:49:05 <shachaf> This one relies on a specific representation of GF(256): https://www.felixcloutier.com/x86/gf2p8affineinvqb
22:49:18 <shachaf> But I don't think the non-inv one does.
22:50:10 <int-e> (Transposition... in the bit order that Knuth uses, does the intel thing produce AB or AB^T or maybe even A^TB or A^TB^T)?
22:50:31 <int-e> I'm not quite up to figuring this out right now.
22:50:50 <b_jonas> sorry, I'm still trying to understand the description in the manual
22:51:15 <shachaf> b_jonas: This one might be a clearer description: https://networkbuilders.intel.com/solutionslibrary/galois-field-new-instructions-gfni-technology-guide
22:51:44 <zzo38> MMIX has them, and if this is the case then also x86, and I think I have read some people had considered MOR and MXOR in WebAssembly (although as far as I know, it has not been done yet), and I also tried to convince them to be included in RISC-V as well. If this is the case, then such a command in GCC and LLVM will be useful for multiple target computers.
22:52:40 <zzo38> One use that it is suitable either MOR or MXOR will do, is exchanging endianness (including PDP-endian).
22:52:50 <b_jonas> maybe you're right,
22:52:50 <int-e> So let's try. In Knuth's convention, every row is a byte. In Intel's, the transformation matrix uses bytes for rows, but the argument bytes are columns. So yeah, there's a transposition here.
22:52:59 <int-e> (The result are columns too.)
22:53:36 <int-e> But... close enough.
22:53:37 <b_jonas> the part I'm confused about is that the description says "computes an affine transformation in the Galois Field 2^8", which makes no sense unless they mean like (the Galois Field 2)^8 as a vector space
22:53:48 <shachaf> I think that's what they mean.
22:54:03 <shachaf> There's no GF(2^8) behavior here as far as I can tell.
22:54:11 <b_jonas> but the more formal description does look like it's computing a matrix product in GF(2) indeed
22:54:16 <int-e> (Which, in particular, includes the affine transformations in GF(2^8))
22:54:30 <int-e> x |-> ax + b, with a,b in GF(2^8)
22:54:43 <int-e> but you have to prepare the matrix corresponding to a yourself
22:55:39 <b_jonas> zzo38: if that's what the instruction does then gcc almost certainly has some builtin for it, and the intel intrinsic defined from it in a header. let me look.
22:56:43 <shachaf> Yes, it's _mm_gf2p8affine_epi64_epi8
22:57:08 <shachaf> Or _mm256 or whatever your register size is.
22:57:12 <b_jonas> and the gcc builtin is __builtin_ia32_vgf2p8affineqb_v16qi
22:57:40 <b_jonas> shachaf: there's no other register size version, only xmm
22:58:11 <shachaf> Are you sure?
22:58:13 <int-e> but the description has 128 and 256 bit versions, hmm.
22:58:18 <b_jonas> hmm no, there is, sorry
22:58:22 <b_jonas> there is a ymm version
22:58:34 <b_jonas> odd because the intel manual only shows an xmm version
22:58:53 <b_jonas> am I looking at too old a manual?
22:59:01 <shachaf> There's even a zmm version if you have AVX512.
22:59:09 <shachaf> I'm not sure whether GFNI is available on any chips without AVX512?
22:59:16 <zzo38> Can such GCC builtins be used on non-x86 computers that might include such a command, though?
22:59:18 <shachaf> But if not it probably will be.
23:00:00 <b_jonas> wait
23:00:08 <int-e> shachaf: funny, https://www.felixcloutier.com/x86/gf2p8affineqb lists the intrinsic but has no separate operational description for that case.
23:00:32 <b_jonas> it looks as if it's AVX512 encoding only, but still only works on 128 byte registers
23:00:52 <int-e> (or intrinsic*s* since there's also the masking feature)
23:01:03 <shachaf> By the way, the reduction polynomial most of the GFNI instructions use, from AES, doesn't have the property that "x" is a generator, which seems a bit unfortunate.
23:01:44 <shachaf> For example the polynomial used in http://alamos.math.arizona.edu/RTG16/ECC/raid6.pdf has x as a generator, which it uses to compute Q more efficiently, since it only need to multiply by any generator.
23:01:47 <b_jonas> no wait, there is an 512 byte version?
23:01:52 <b_jonas> well I'm confused, but whatever
23:01:54 <shachaf> ANy idea why AES picked that specific polynomial?
23:02:23 <b_jonas> shachaf: maybe it was lexicographically the first polynomial or something
23:02:48 <b_jonas> or colexicographically
23:06:04 <shachaf> Also, man, using x for elements of a prime power field seems so awkward to me.
23:06:45 <shachaf> When you do a field extension to add i, or sqrt(2), or whatever, you don't talk about elements of the new field being polynomials, you just use some new symbols.
23:06:55 <shachaf> I don't know why people don't do that with finite fields.
23:07:11 <int-e> it's the lexicographically smallest primitive polynomial of degree 8
23:08:16 <b_jonas> int-e: well that's why then. it's a cryptographic standard so it has to make its choices nothing-up-my-sleeve
23:09:08 <int-e> You really want one of the form x^8+p(x) with small degree for p(x) because that's advantageous for the circuit depth of modular reduction. So I think that leaves p(x) = x^4+x^3+x^2+1 or p(x) = x^4+x^3+x+1, and they picked the primitive one rather than the other which is merely irreducible.
23:09:52 <int-e> I don't know whether that has any effect for the application.
23:10:38 <b_jonas> wait, doesn't primitive mean that x is a generator?
23:10:44 <int-e> Yes
23:10:47 <int-e> b_jonas: I don't know what your objection is precisely.
23:10:48 <b_jonas> as in a group generator
23:10:51 <int-e> Yes
23:11:29 <b_jonas> wait, so are you talking about both the AES instructions and different instructions now
23:11:42 <shachaf> Do you mean my objection?
23:11:46 <int-e> I'm talking about the AES galois field
23:12:26 <b_jonas> but earlier shachaf says that AES chose the one where the reduction polynomial is not a generator
23:12:27 <int-e> shachaf: good point, that was no objection
23:12:42 <b_jonas> and IIUC there are like four different intel instructions and some of them use a different polynomial
23:13:06 <int-e> Oh, I'm also too stupid to convert 0x1b to binary.
23:13:36 <int-e> That corresponds to x^4+x^3+x+1, so the non-primitive one indeed.
23:13:39 <int-e> I'm so bad.
23:15:20 <b_jonas> and besides the two different representation that those use, there's also logarithmic representation used in https://www.perlmonks.com/?node_id=862789 (admittedly that's GF(2^7) but the same idea would work for GF(2^8)), and the Sprague-Grundy representation used in David Madore's secret sharing program
23:16:12 <b_jonas> (ok, Sprague-Grundy representation is probably not the best name for it)
23:17:00 <b_jonas> (nim representation might be better probably)
23:17:22 <b_jonas> (though I think there was a specific proper noun associated with nim multiplication too, but I can't find what that is)
23:18:13 <shachaf> OK, so 0x1d is the primitive one that has the property that x is a generator.
23:18:24 <shachaf> And it's almost but not quite lexicographically smallest.
23:20:20 <shachaf> By the way, I like the characterization of a field as a commutative ring where identifying any two elements collapses the whole thing down to one element.
23:20:37 <shachaf> It's just a rephrasing of a more usual thing people say about having two ideals.
23:21:00 <shachaf> But quotienting by an equivalence seems more natural to me for some reason.
23:21:40 <esolangs> [[DetailedFuck]] https://esolangs.org/w/index.php?diff=104158&oldid=104157 * Kaveh Yousefi * (+201) Added a hyperlink to my implementation of the DetailedFuck programming language on GitHub as a replacement of the previously removed converter function and added the category tag Implemented.
23:24:27 <esolangs> [[DetailedFuck]] https://esolangs.org/w/index.php?diff=104159&oldid=104158 * Kaveh Yousefi * (+134) Introduced an Instructions section for the command substitutions table, preceded by a short preamble.
23:25:12 <int-e> So it's simply the lexicographically smallest irreducible polynomial of degree 8, no additional constraints. Makes sense?
23:29:15 <shachaf> By the way, I should figure out how Berlekamp-Massey or some similar algorithm works.
23:29:33 <shachaf> For finding multiple errors.
23:30:52 <int-e> Oh, the determinant of the mixcolumn matrix is 1 (mod 2) regardless of the choice of irreducible polynomial. Fun.
23:34:54 <int-e> (which explains how the inverse matrix entries are all of degree 3 or less)
23:36:35 <esolangs> [[Basic Programming]] M https://esolangs.org/w/index.php?diff=104160&oldid=103838 * Oshaboy * (-4) those are tokens, not commands
23:37:18 <int-e> "for finding multiple errors"... in an error correction code context?
23:37:35 <shachaf> Right.
23:37:56 <shachaf> Say if you split data into n data shards and add 4 parity shards, you should be able to correct up to 2 errors.
23:38:23 <shachaf> (The n+2 case where you correct one error is really simple, described in the PDF I linked above.)
23:40:19 <b_jonas> as for the earlier question on whether that intel instruction transposes one of its input operand matrices, I believe the answer is yes, it transposes just like the MMIX instruction, but the intel instruction differs because it also flips one of the matrices in the direction that amounts to bit reversal rather than endianness reversal
23:44:26 <int-e> Oh. You're right, the bytes in the MMIX thing are columns... that, or Y and Z are swapped.
23:45:46 <int-e> But regardless, when comparing the two, one argument is transposed in Intel's version.
23:46:18 <int-e> And, hmm, no, transpose is not a bit reversal.
23:46:40 <int-e> (just look at the diagonal antries that are fixed)
23:50:23 <b_jonas> int-e: transpose isn't a bit reversal, flip is a bit reversal
23:50:41 <int-e> I don't think that there's a flip involved
23:50:49 <int-e> but as usual I may have missed it
23:52:20 <b_jonas> hmm wait
23:52:29 <b_jonas> it's not a bit reversal, it's a byte reversal of one input
23:52:38 <b_jonas> endianness reversal
23:53:21 <int-e> oh this thing... tsrc2qw.byte[7-i]... yeah I did miss that.
23:55:26 <int-e> Hmm I wonder why they're doing that.
23:56:39 <b_jonas> int-e: probably depends on which way you represent the bits of a polynomial
23:57:03 <b_jonas> no wait that's silly
23:58:04 <b_jonas> maybe this helps with AES or something
23:58:13 <b_jonas> or some other crypto protocol
←2022-10-21 2022-10-22 2022-10-23→ ↑2022 ↑all