2
$\begingroup$

$$L = \left\lceil \frac{\sqrt{v-4 \times N}-1}{4} \right\rceil$$

This is a line in my program but I cannot get ceil() to work in GMP, so I'd like to approach this mathematically and just rewrite it so it doesn't need ceil().

  • 0
    What are $v$ and $N$? Fractions, integers?2012-11-28
  • 0
    @AntonioVargas Integers2012-11-28
  • 0
    Does floor work for you?2012-11-28
  • 0
    @hardmath Yes, floor is fine -- ceil is the only problem2012-11-28
  • 0
    Any thoughts on this?2012-11-28
  • 2
    ceil(x) = - floor(-x).2012-11-28

1 Answers 1

2

You can use the floor with the difference of the desired quantity and a sufficiently large integer. In particular here we know:

$$ v > \frac{\sqrt{v-4 \times N}-1}{4} $$

Therefore:

$$ L = \left\lceil \frac{\sqrt{v-4 \times N}-1}{4} \right\rceil = v - \left\lfloor v - \frac{\sqrt{v-4 \times N}-1}{4} \right\rfloor $$

'Nuff said? There are other ways to do it, but you have $v$ on hand and this is probably the fewest additional operations (and avoids any case logic). Certainly worth a comment in the code so you don't have a long moment of confusion months down the road...