Hello,

I definitely don't get the same results as you.  Here's my Sage
session:

sage: import math
sage: l = lambda x: -3*x^7 - 2*x^3 + 2*math.exp(x^2) +
x^12*(2*math.exp(2*x) - math.pi*math.sin(x)^((-1) +
math.pi)*math.cos(x)) + 4*(math.pi^5 + x^5 + 5*math.pi*x^4 +
5*x*math.pi^4 + 10*math.pi^2*x^3 + 10*math.pi^3*x^2)*math.exp(123 + x
- x^5 + 2*x^4)
sage: f = -3*x^7 - 2*x^3 + 2*exp(x^2) + x^12*(2*exp(2*x) -
pi*sin(x)^((-1) + pi)*cos(x)) + 4*(pi^5 + x^5 + 5*pi*x^4 + 5*x*pi^4 +
10*pi^2*x^3 + 10*pi^3*x^2)*exp(123 + x - x^5 + 2*x^4)
sage: ff = f._fast_float_(x)
sage: l(0.01)
3.29059638451369e56
sage: ff(0.01)
3.2905963845136858e+56
sage: vals = [ i/float(1000.0) for i in range(1001)]
sage: timeit("for i in vals: l(i)")
5 loops, best of 3: 280 ms per loop
sage: timeit("for i in vals: ff(i)")
125 loops, best of 3: 3.47 ms per loop
sage: timeit('ff(1.0r)')
625 loops, best of 3: 6.03 µs per loop

The Python lambda is I get is quite a bit slower than yours, and it
looks like fast_float is about 50x faster than lambda.

--Mike

On Mar 30, 9:41 am, Vinzent Steinberg
<[EMAIL PROTECTED]> wrote:
> Thank you very much for the link!
>
> I did a benchmark with this pretty function: -3*x**7 - 2*x**3 +
> 2*exp(x**2) + x**12*(2*exp(2*x) - pi*sin(x)**((-1) + pi)*cos(x)) +
> 4*(pi**5 + x**5 + 5*pi*x**4 + 5*x*pi**4 + 10*pi**2*x**3 +
> 10*pi**3*x**2)*exp(123 + x - x**5 + 2*x**4) for x = (0,1,2,...,1000)/
> 1000.
>
> The results:
>
> sage fast_float: 0.793402 s
> python lambda:   0.032177 s
> compiled:        0.016872 s
>
> I measured only function evaluation time (within python loop). I did
> use sage interactively. Maybe I did something wrong, because I can't
> explain why sage is even slower than pure python. Anyway, I did use
> the time module and precision on Unix is afaik only about 1/100 s, so
> this not a good benchmark.
>
> Can anyone confirm these numbers?
>
> Regards,
> Vinzent
>
> On Mar 29, 10:15 am, Mike Hansen <[EMAIL PROTECTED]> wrote:
>
> > Hi Vinzent,
>
> > Robert Bradshaw wrote some really nice fast function evaluation code
> > for Sage using Cython.  You can check it out 
> > here:http://www.sagemath.org/hg/sage-main/file/211b127eab5d/sage/ext/fast_...
>
> > --Mike
>
> > On Mar 28, 8:13 am, Vinzent Steinberg
>
> > <[EMAIL PROTECTED]> wrote:
> > > I wrote some code using Cython (http://cython.org/) and gcc to compile
> > > SymPy functions to machine code which is directly accessible using a
> > > Python Function.
> > > See this ticket:http://code.google.com/p/sympy/issues/detail?id=765
>
> > > It works fine so far, I got it nearly running even on Windows using
> > > MinGW, there were only some naming issues during linking, which are
> > > probably easy to solve.
>
> > > Speedups compared to f.subs(x, ...).evalf() are epic (it's around 200
> > > times faster).
>
> > > Currently it uses the standard C math library, it could be extended to
> > > use other libraries (for examplehttp://gmplib.org/) with support for
> > > arbitrary precision, complex numbers, even more speed etc. So far the
> > > only dependencies are Python (which includes the necessary headers),
> > > Cython (written in pure Python) and a C compiler (which accepts gcc
> > > command line syntax). At the moment the paths must be specified, but
> > > this could be changed to work platform-independent and out of the box.
>
> > > Native NumPy support might be wise to avoid Python's function
> > > overhead.
>
> > > It could be used by evalf in some way, compiling takes the first time
> > > about 1 s, afterwards less (of course a function is only compiled
> > > once, the temporary files are reused). Probably this could be
> > > optimized. So it should eventually be added to the Function object.
> > > And maybe there should be a global compile function.
>
> > > Fast function evaluation in general is interesting for plotting and
> > > numerical algorithms. Dynamic plotting of a function when zooming out
> > > (variable interval depending on current view) would be interesting in
> > > my opinion. Are there other use cases? Algebraic algorithms where
> > > speed matters?
>
> > > Regards,
> > > Vinzent
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to