The recently proposed o(n log n) integer multiplication algorithm [pdf]

(web.maths.unsw.edu.au)

34 points | by craigcitro an hour ago ago

19 comments

  • jdb1729 38 minutes ago

    > The new result does not directly imply new complexity bounds for polynomial multiplication over a fixed finite field, say multiplication in F2[x]. The state of the art for this problem is an algorithm that multiplies polynomials of degree n in time O(n log n 4^log*(n)) [HvdH19].

    @platypii and I obtained a Lean proof of the same improvement for DFT over prime-order finite fields (yielding polynomial multiplication via the convolution theorem): https://github.com/platypii/integer-mult-bounds-lean/blob/ma...

  • yaoke259 12 minutes ago

    Awesome write up and intro by a fellow Sydney-sider, kept me hooked! As someone who's not a maths wizard, the technical details flew by my head but the prose allowing me to empathise deeply with those in the field was very enlightening. I never realised how big of a deal the maths dump was and how much it has shaken up the field. I guess we are all just trying to figure out this whole "intelligence on tap" thing together.

    • m00dy a minute ago

      You don’t need to be a math wizard. Just upload the paper to an AI and ask, “Explain this like I’m five.” Then, with each follow-up prompt, increase the age and level of expertise you want it to assume.

  • flebron an hour ago

    Note in this case the title says "O(n log n)", but the important part is this is "o(n log n)", not just "O(n log n)'. The former is a strict subset of the latter. We already knew how to multiply two n-bit integers in O(n log n) time, via the FFT.

    • ComplexSystems 30 minutes ago

      Roughly speaking, O(n log n) means "grows no faster than k(n log n) for some k", whereas o(n log n) means grows strictly more slowly* than k(n log n) for all* choices of k.

    • onionisafruit an hour ago

      For those of us uninformed, what’s the difference between O and o?

      • bobmarleybiceps 25 minutes ago

        Knuth originally defining them https://dl.acm.org/doi/10.1145/1008328.1008329

      • ruined 35 minutes ago

        f(n) = O(g(n)) means as n increases, f(n)/g(n) must not grow beyond a constant

        f(n) = o(g(n)) means as n increases, f(n)/g(n) must shrink

        • jhanschoo 13 minutes ago

          Nitpick:

          s/must shrink/must eventually shrink, after finitely many n/

          Equivalently, must go to zero in the limit.

      • theokrueger 43 minutes ago

        Big O basically drops constants

        O(2n+1) = O(2n) = O(n)

        o(2n+1) > o(2n) > o(n)

        Both define upper boundary, but big O can read like "the function is generally proportional to ___" and little o can read like "the function is never more than _____"

        • bobmarleybiceps 29 minutes ago

          that's not the convention I know... (from CLRS algorithms book).

          Big O is sort of like <=. little o is sort of like <.

          https://dl.acm.org/doi/10.1145/1008328.1008329

          • npinsker 21 minutes ago

            yes, GP is slightly off, but the idea of <= and < is accurate.

            O(n) is: "there exists a K such that, for sufficiently large n, K*n is always larger".

            o(n) is: "for every K, for sufficiently large n, K*n is always larger". (So o(2n+1) and o(2n) and o(n) are the same thing.)

      • boothby 43 minutes ago

        If f is O(g) and o(h) then

          Lim f/g -> C a constant
        
        And

          Lim f/h -> 0
        • adgjlsfhk1 12 minutes ago

          > Lim f/g -> C a constant.

          This isn't quite correct. O(g) doesn't require the limit to exist.

        • appplication 39 minutes ago

          Lmao! If someone is asking the difference between big and little o notation this is absolutely not the right way to clarify it.

          If you were joking then maybe you got me

          • boothby 20 minutes ago

            I do hope you can find and reattach your ass; that does sound painful.

      • Ygg2 40 minutes ago

        Both are upper bounds. But small o is strictly smaller than upper bound. Big O is not greater than upper bound.

        https://stackoverflow.com/questions/1364444/difference-betwe...

    • craigcitro 43 minutes ago

      ty, fixed. (ahh, copy paste.)

  • ajkjk 25 minutes ago

    Really enjoy the writing style here.