• farcaster@lemmy.worldOP
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    edit-2
    7 months ago

    Well, yeah, but you asked why they didn’t use integer sqrt. It’s something many programming languages just don’t have. Or if they do, it’s internally implemented as a sqrt(f64) anyway, like C++ does.

    Most CPUs AFAIK don’t have integer sqrt instructions so you either do it manually in some kind of loop, or you use floating point…

    • Bazebara
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago

      Integer sqrt is usually not a library function and it’s very easy to implement, just a few lines of code. Algorithm is well defined on Wikipedia you read a lot. And yes, it doesn’t use FPU at all and it’s quite fast even on i8086.

      • farcaster@lemmy.worldOP
        link
        fedilink
        arrow-up
        1
        ·
        7 months ago

        I doubt doing it in software like that outperforms sqrtss/sqrtsd. Modern CPUs can do the conversions and the floating point sqrt in approximately 20-30 cycles total. That’s comparable to one integer division. But I wouldn’t mind being proven wrong.

        • Bazebara
          link
          fedilink
          arrow-up
          2
          ·
          7 months ago

          Integer sqrt can be used for integers with any length, not only for integers fit into f64