[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)