git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Generalised bisection

From
John Tapsell <johnflux@gmail.com>
Date
Mar 12, 2009, 06:45 UTC
Message-ID
<43d8ce650903112345x3d40b70ap7e4c0f8c7d0b6069@mail.gmail.com>
In-Reply-To
<efe2b6d70903111515p2b9f656bp186d0b3cc7ae483d@mail.gmail.com>
2009/3/11 Ealdwulf Wuffinga <ealdwulf@googlemail.com>:
Show 9 quoted lines
> [John will get this twice, sorry; not used to this mail interface yet.]
>
> On Wed, Mar 11, 2009 at 9:35 AM, John Tapsell <johnflux@gmail.com> wrote:
>
>> mpmath might be the more annoying dependency - what functions do you
>> use from it?  Could they trivially be reimplemented?
>
> What I use is the multiprecision floating point number class. doubles
> don't seem to be long enough.

Hmm, really really? Sometimes this sort of thing can be fixed by just readjusting the formulas. What formulas are you using that require more precision than doubles?

Show 10 quoted lines
> The reason for using mpmath rather than the more  widespread GMP (and
> its python wrapper gmpy) is that the latter only supports
> integer powers, whereas BBChop needs fractional powers.
>
> So, it might be possible to switch to gmpy,  or some other widespread
> library,  by implementing a pow() which supports fractional powers.
> I think I only use the normal arithmetic operators, log, and pow, so
> in principle those could be reimplemented, to eliminate the dependency
> altogether.
> It seems a little bit of a waste of time, though.
A little bit of math trickery helps here :-)
y =  x^b

log(y) = log(x^b) = b * log(x) e^log(y) = e^(b log(x))

y = exp(b * log(x))

So as long as you have 'exp' and 'log' functions, you can raise x to the power of b, even if b is fractional.

Just to prove it, square root of 2 is:

$ echo "e(0.5*l(2))" | bc -l 1.41421356237309504878

John
Previous: Ealdwulf WuffingaNext: Johannes Schindelin
Message 11 of 25 in “Generalised bisection”
  1. Ealdwulf WuffingaMar 9, 2009
  2. Christian CouderMar 10, 2009
  3. Ealdwulf WuffingaMar 11, 2009
  4. John TapsellMar 11, 2009
  5. Johannes SchindelinMar 11, 2009
  6. John TapsellMar 11, 2009
  7. Johannes SchindelinMar 11, 2009
  8. John TapsellMar 11, 2009
  9. Ealdwulf WuffingaMar 11, 2009
  10. Ealdwulf WuffingaMar 11, 2009
  11. John TapsellMar 12, 2009
  12. Johannes SchindelinMar 12, 2009
  13. Steven TweedMar 12, 2009
  14. Ealdwulf WuffingaMar 13, 2009
  15. Ealdwulf WuffingaMar 13, 2009
  16. Steven TweedMar 13, 2009
  17. Ealdwulf WuffingaMar 15, 2009
  18. Steven TweedMar 16, 2009
  19. John TapsellMar 16, 2009
  20. Ealdwulf WuffingaMar 16, 2009
  21. Ealdwulf WuffingaMar 16, 2009
  22. Ealdwulf WuffingaMar 13, 2009
  23. Johannes SchindelinMar 13, 2009
  24. John TapsellMar 13, 2009
  25. Johannes SchindelinMar 13, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.