Hamilton was an Irish mathematician, who discovered quaternions on the 16th of October, 1843. When he discovered them, he was so happy that he carved his fundamental equations i² = j² = k² = ijk = −1 into the stone of a bridge (apparently he was walking near it).

“That is to say, I then and there felt the galvanic circuit of thought close; and the sparks which fell from it were the fundamental equations between i, j, k; exactly such as I have used them ever since.”

If you think this is not fun, please, just ignore it. While I’ll write this like talking to a 14-year-old teen, the following is nerdy (mathematical) and lengthy 😅

Today a hundred and four score years ago, Hamilton discovered “quaternions”. To commemorate this, allow me to use (Monero-flavored) quaternions to prove Euler’s identity: If N is a sum of four squares and n is a sum of four squares too, then Nn is also a sum of four squares.

Example: 8 = 2² + 2² + 0² + 0² and 127 = 9² + 6² + 3² + 1² are sums of four squares. So 8*127 = 1016 must be somehow a sum of four squares too.

Proof: Given N = A² + B² + C² + D² and n = a² + b² + c² + d² with some intergers A, B, C, D, a, b, c, d, we need to show Nn = E² + F² + G² + H² with some integers E, F, G, H. Since we’re Monero fans, let us use X, M, R instead of Hamilton’s i, j, k. Things work in a “cyclic“ way like this:

X² = M² = R² = −1 … Eq.(1)

XM = R, but MX = −R … Eq.(2)

MR = X, but RM = −X … Eq.(3)

RX = M, but XR = −M … Eq.(4)

If we define XMR = −1 imitating Hamilton’s ijk = −1, (2)(3)(4) follow. X, M, R are a bit unusual: the order of multiplication matters (e.g. XM and MX are different). On the other hand, regular numbers (say: e, f, g, h) can “move” freely, as in hXM = XhM = XMh. A quaternion is a “number” of the form e + fX + gM + hR.

Assume we have two quaternions, Q = A + BX + CM + DR and q = a + bX + cM + dR. Multiply Q by q, and things become a bit messy:

Qq = (A + BX + CM + DR)(a + bX + cM + dR)

= Aa + Ab(X) + Ac(M) + Ad(R)

 + Ba(X) + Bb(X²) + Bc(XM) + Bd(XR)

 + Ca(M) + Cb(MX) + Cc(M²) + Cd(MR)

 + Da(R) + Db(RX) + Dc(RM) + Dd(R²)

= Aa + Ab(X) + Ac(M) + Ad(R)

 + Ba(X) + Bb(−1) + Bc(R) + Bd(−M) ← using (1)(2)(4)

 + Ca(M) + Cb(−R) + Cc(−1) + Cd(X) ← using (2)(1)(3)

 + Da(R) + Db(M) + Dc(−X) + Dd(−1) ← using (4)(3)(1)

= (Aa − Bb − Cc − Dd)

 + (Ab + Ba + Cd − Dc)X

 + (Ac − Bd + Ca + Db)M

 + (Ad + Bc − Cb + Da)R

If we write

E = Aa − Bb − Cc − Dd,

F = Ab + Ba + Cd − Dc,

G = Ac − Bd + Ca + Db,

H = Ad + Bc − Cb + Da,

then above mess becomes tidy:

Qq = E + FX + GM + HR … Eq.(5)

Now, consider a function swap() that converts a given quaternion u = e + fX + gM + hR into a quaternion e − fX − gM − hR. By messy calculation like above, you can show: swap(Q) * swap(q) = E − FX − GM − HR which is = swap(Qq) according (5). Generally, for any two quaternions u, v:

swap(uv) = swap(v) * swap(u) … Eq.(6)

We define the hash of u = e + fX + gM + hR as hash(u) = e² + f² + g² + h². Since e, f, g, h are regular numbers, a hash is a regular number. Just like above, do some math and you get:

hash(u) = u * swap(u) … Eq.(7)

Using (7) with u = Qq,

hash(Qq) = (Qq) * swap(Qq) = Q * q * (swap(q) * swap(Q)) ← using (6) with u=Q, v=q

= Q * (q * swap(q)) * swap(Q) = Q * hash(q) * swap(Q) ← using (7)

= Q * swap(Q) * hash(q) ← hash is a regular number; can “move” freely

Again using (7), we conclude hash(Qq) = hash(Q) * hash(q) … Eq.(8)

Recall the definition of “hash”. Given Q = A + BX + CM + DR and q = a + bX + cM + dR,

hash(Q) * hash(q) = (A² + B² + C² + D²)(a² + b² + c² + d²) … Eq.(9)

We know Qq = E + FX + GM + HR as in (5), so

hash(Qq) = E² + F² + G² + H² … Eq.(10)

(8) says (9) = (10), meaning

(A² + B² + C² + D²)(a² + b² + c² + d²) = E² + F² + G² + H² as required.

Example (cont.): With 8 = 2² + 2² + 0² + 0² and 127 = 9² + 6² + 3² + 1²,

E = Aa − Bb − Cc − Dd = 2×9 − 2×6 − 0×3 − 0×1 = 6

F = Ab + Ba + Cd − Dc = 2×6 + 2×9 + 0×1 − 0×3 = 30

G = Ac − Bd + Ca + Db = 2×3 − 2×1 + 0×9 + 0×6 = 4

H = Ad + Bc − Cb + Da = 2×1 + 2×3 − 0×6 + 0×9 = 8

Sure enough, 6² + 30² + 4² + 8² = 1016 = 8*127 😃

Notes: We implicitly assumed that multiplication of quaternions is associative. This assumption is correct as you can see (ij)k = (k)k = −1 and i(jk) = i(i) = −1 are identical, etc. Euler originally used −B, −C, −D, instead of our B, C, D. Both versions are essentially the same.

Monero-themed names ~ Standard names:

X, M, R ~ i, j, k

swap ~ conjugate

hash ~ norm (or norm squared, depending on how you define it)

  • Black Xanthus@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    9 months ago

    I did not understand a word of it, but I appreciate the length of post, comrade lemming. One day I will understand quaternions - today is not that day. Gave me flash-backs to my Undergrad maths for software engineering. I didn’t understand it then, either.

    That said, I should probably understand vectors first.

    Your post needs more love by people who do get it.

    • Saki@monero.townOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 months ago

      Thanks for nice words! This is like a puzzle. Numbers like 0² = 0×0 = 0, 1² = 1×1 = 1, 2² = 2×2 = 4, 3² = 3×3 = 9 are called squares: 0, 1, 4, 9, 16, 25, 36, 49, … are squares.

      Puzzle 1: Can you make 5 by adding two squares? Easy: 2² + 1².

      Puzzle 2: How about 73? A bit harder but, yes, 8² + 3² = 64 + 9 = 73.

      Knowing these two recipes—how to make 5 (or 73) as a sum of two squares—, there is a way to make 5×73 = 365 as a sum of two squares too. The above is similar, except it’s about a sum of four squares, not two.

      A prime like 5, 13, 17 (bigger by 1 than a multiple of 4) can be written as a sum of two squares. On the other hand, a prime like 3, 7, 11 (bigger by 3 than a multiple of 4) can’t be written as a sum of two squares. This looks like a problem of natural numbers, but a natural way to understand what’s going on here is, unexpectedly, seeing this as a problem of the world of complex numbers. That’s counter-intuitive, but fascinating…

      What if you’re allowed to use three squares? You can now make 3 = 1² + 1² + 1² and 11 = 3² + 1² + 1². But you can’t still write 7 as a sum of three squares. Then, what if you’re allowed to use four squares? That’s the neat part: you can write any natural number as a sum of four squares, like 7 = 2² + 1² + 1² + 1². A natural way to see what’s going on here is, using quaternions!

      If you know a complex number like C = A + Bi and c = a + bi, you can calculate Cc = (A + Bi)(a + bi) like normally, except whenever you get i², you’ll replace it with −1. Quaternions are similar. You can add, multiply, etc. them like normally, except whenever you get i², j², k², ij, ji, jk, kj, ki, ik, you’ll replace them in a certain way (in the post, X, M, R are used instead of i, j, k for fun).

      Seriously, math of the above post is not as hard as you may be thinking. The “joke” (not math) may be a bit esoteric for regular people, though, as it’s related to the nature of Monero (“fungible”).

      • Black Xanthus@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        8 months ago

        Comrade lemming, I love your enthusiasm. I think I get the basic idea that a quaternion is a number made up of 4 squares.

        I love your belief that I know a complex number! (I don’t).

        I would love to have a better grip on maths, but it has always alluded me. I once got a maths PhD student to tutor me, and they said I lacked a fundamental understanding of number.

        I will keep reading, it may click!

        Thanks for your reply!

        • Saki@monero.townOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          8 months ago

          Yeah, something like that. A quaternion has 4 elements, and its “size” is related to the sum of 4 squares.

          I’m not that good myself, just yet another number theory lover (or a wannabe Gauss, a wannabe Knuth…) You at least knew the word quaternion and more or less understood immediately that it’s related to a (four-dimensional) vector; that’s 100% correct & you do have a good grip, or good intuition. Anyway, the original post is basically a joke, where something rather trivial is written in an unusual way. Not to be taken too seriously…