[HN Gopher] Cracovians: The Twisted Twins of Matrices
___________________________________________________________________
Cracovians: The Twisted Twins of Matrices
Author : mci
Score : 49 points
Date : 2025-06-20 16:35 UTC (6 hours ago)
(HTM) web link (marcinciura.wordpress.com)
(TXT) w3m dump (marcinciura.wordpress.com)
| kubb wrote:
| > However, the multiplication of a cracovian by another cracovian
| is defined differently: the result of multiplying an element from
| column i of the left cracovian by an element from column j of the
| right cracovian is a term of the sum in column i and row j of the
| result.
|
| Am I the only one for whom this crucial explanation didn't click?
| Admittedly, I might be stupid.
|
| Wikipedia is a bit more understandable: ,,The Cracovian product
| of two matrices, say A and B, is defined by A [?] B = (B^T)A
| tempodox wrote:
| You're not the only one. That "explanation" is just really bad.
| tgv wrote:
| It's the crucial part, and even with the example, I couldn't
| understand it. Like I can't understand why the second column
| in the first matrix doesn't have signs. Or why the 0 in the
| result matrix is negative.
|
| But in another link I found that it's column by column
| multiplication. So A x B = C, then C[i][j] = sum(A[k][i] *
| B[k][j]). Unfortunately, the example doesn't match that
| definition...
| burnished wrote:
| No, I think it is too ambiguous to be useful. The example
| wasn't helpful either, I think they needed to perform the
| individual calculations for clarity.
| kubb wrote:
| Yeah, usually you name the matrix elements a, b, c, d, etc.
| and write out the formula for the elements of the result.
| AdamH12113 wrote:
| The example is simply wrong, according to other sources. This
| along with the inconsistent formatting makes me wonder if it
| was written by an LLM. It's a shame; this seems like an
| interesting topic.
| andrewla wrote:
| Agreed -- "is a term of the sum" is such an inverted way to
| look at it.
|
| Better I think would be to say "the result in column i and row
| j is the sum of product of elements in column i of the left
| cracovian and column j of the right cracovian".
|
| And even by this definition the example given doesn't seem to
| track (and the strangeness of sometimes saying "+" and
| sometimes not, and having both "0" and "-0" in the example is
| bananas!): { 3 2 } { 1 -4 } = { 5 -2
| } { -1 0 } { -2 3 } = { 0 2 }
| 3 * 1 + -1 * -2 == 5 -- check 3 * -4 + -1 * 3 == -15 --
| what? 2 * 1 + 0 * -2 == 2 (okay, but shouldn't this be
| in the lower left, column 1 dotted with column 2?) 2 *
| -4 + 0 * 3 = -8 (now I'm really missing something)
| mci wrote:
| Thanks for the feedback, everyone. I pasted my Polish text
| into Gemini to translate it into English. Gemini hallucinated
| the translation of this example. Now it should be OK.
| pomian wrote:
| Even in Polish, this comes out Greek to me.
| pomian wrote:
| I mean, it makes some sort of visual sense, but can't
| grasp the results from the matrices shown.
| mci wrote:
| I took the liberty to replace my awkward wording with your
| "the result in column i and row j is the sum of product of
| elements in column i of the left cracovian and column j of
| the right cracovian". Hope you don't mind. Thanks!
| fxj wrote:
| I didnt get the explanation of the multiplication. After reading
| the wikipedia article it made mode sense:
|
| https://en.wikipedia.org/wiki/Cracovian
|
| The Cracovian product of two matrices, say A and B, is defined by
|
| A [?] B = BT A,
|
| where BT and A are assumed compatible for the common (Cayley)
| type of matrix multiplication and BT is the transpose of B.
|
| Since (AB)T = BT AT, the products (A [?] B) [?] C and A [?] (B
| [?] C) will generally be different; thus, Cracovian
| multiplication is non-associative.
|
| A good reference how to use them and why they are useful is here
| (pdf):
|
| https://archive.computerhistory.org/resources/access/text/20...
| adastra22 wrote:
| As far as I can tell I don't think it is correct to say that
| this isn't a matrix. B is just written down in transposed form.
| Whether that makes the math more or less clear is something you
| can argue for or against, but it's the same math and it is
| confusing to call it something else.
| noosphr wrote:
| It is a tensor of rank two with a special binary operation on
| tensors. These objects aren't matrices in the mathematical
| sense any more than convolution kernels aren't.
| gnulinux wrote:
| I guess I'm skeptical of using a non-associative algebra instead
| of something that can trivially be made into a ring or field
| (i.e. matrix algebra). What advantages does this give us?
| mci wrote:
| Author here. There are no practical advantages, as far as I
| know. Not even faster multiplication on today's computers.
| hansvm wrote:
| One thing that comes up in the sort of code ML I like to
| write is a careful attention to memory layout. Cracovians,
| defined according to some sibling comment as (B^T)A, make
| that a little more natural, since B and A can now have the
| same layout. I haven't used them though, so I don't have a
| good sense of whether that's more or less painful than other
| approaches.
| bravesoul2 wrote:
| Shouldn't be the same on a computer right? The change is in
| human perception not actually what hapens when multiplying.
| esafak wrote:
| Missed a chance to call it the twisted sister!
| TimorousBestie wrote:
| What an interesting little nook of matrix analysis history!
| Thanks for sharing. :)
| noosphr wrote:
| In Einstein notation this operation is Aij Bkj, which
| incidentally shows why Einstein notation is so useful.
| Syzygies wrote:
| I'm a mathematician who taught linear algebra for decades. I
| love Einstein notation. I don't find Cracovians interesting at
| all.
|
| Old texts got really worked up whether a vector was a row or
| column. The programming language APL resolved this quite
| nicely: A scalar has no dimensions, a vector has its length as
| its one dimension, ... Arbitrary rank objects all played nicely
| with each other, in this system.
|
| A Cracovian is a character or two's difference in APL code.
| There's a benign form of mental illness learning anything,
| where one clutches onto something novel and obsesses over it,
| rather than asking "That was exciting! What novel idea will I
| learn in the next five minutes?" I have friends from my working
| class high school who still say "ASSUME makes an ask of you and
| me" as if they just heard it for the first time, while the most
| successful mathematicians that I know keep moving like sharks.
|
| I wouldn't stall too long thinking about Cracovians, as amusing
| a skim as the post provided.
| noosphr wrote:
| I mean theres nothing special about naming binary operations
| on tensors of fixed rank. Matrices have some nice
| mathematical properties which is why they are studied so much
| in mathematics. But for number crunching there is no reason
| to prefer then to cracovians, or vice versa, without knowing
| what the underlying memory layout is in hardware.
| semiinfinitely wrote:
| Uhh so it's just matrices where the left slot of matmul is
| transposed?
___________________________________________________________________
(page generated 2025-06-20 23:00 UTC)