Awesome! Ping me if you need someone to help with code review.

--
Benjamin Jones
benjaminfjo...@gmail.com


On Tue, May 28, 2013 at 11:48 AM, Eviatar <eviatarb...@gmail.com> wrote:

> Hello,
>
> I am grateful to have been selected as one of the Google Summer of Code
> students for this summer. I will be working on a benchmark framework for
> testing functions over different domains, making symbolic the special
> functions that are not yet, and implementing generalized hypergeometric
> functions. Here are some more details from my application:
>
> 1. Symbolic wrappers
>> A pending patch, ticket 
>> #4102<http://trac.sagemath.org/sage_trac/ticket/4102>,
>> will make the Bessel functions symbolic. I will similarly update the rest
>> of the special functions. This will involve defining methods for evaluation
>> and wrapping third-party libraries for handling simplification,
>> integration, etc.
>>
>
>
> From the open-source software listed at the 
> DLMF<http://dlmf.nist.gov/software/>,
>> Sage ships with Cephes (although it is not used for anything at the
>> moment), GSL, MPFR, Maxima, PARI/GP, SLATEC (through Maxima), and mpmath.
>> All these except Cephes and SLATEC have existing interfaces, facilitating
>> the wrapping of functionality.
>> The Bessel functions will be made symbolic by #4102, and the Airy
>> functions by the pending 
>> #12455<http://trac.sagemath.org/sage_trac/ticket/12455>.
>> hypergeometric_U, spherical_bessel_J, spherical_bessel_Y,
>> spherical_hankel1, spherical_hankel2, spherical_harmonic, elliptic_J,
>> jacobi, inverse_jacobi, elliptic_e, elliptic_ec, elliptic_eu, elliptic_f,
>> elliptic_kc, and elliptic_pi remain to be done.
>>
>
>
> 2. Benchmark framework
>> The benchmark framework is important for determining which backend is
>> appropriate for numeric evaluation of functions on different domains. Due
>> to implementation details, different algorithms will be suited to different
>> regions of the function's domain; for example, hypergeometric_U(-4, 10,
>> 100) is faster with PARI, but hypergeometric_U(-40, -40, 10) is faster
>> with SciPy. Picking the domains will require looking at the algorithm
>> implementation. A benchmark framework will allow Sage to more intelligently
>> decide between the backends depending on input, and also to detect and
>> track regressions. A sufficiently versatile implementation could also be
>> extended to other types of functions in the future.
>>
>
>
> I would begin by building on the benchmark system in tests/benchmark.py.
>> I would create a subclass of Benchmark designed for numerical functions;
>> it would accept arguments of domains on which to test functions, and
>> generate random test values using the underlying rings' 
>> random_elementmethod. For example, benchmark_function(gamma,
>> domains=[[1, 10], [50, 60]], ring=ZZ, systems=['maxima', 'sympy']) would
>> benchmark the gamma function on the integer domains [1, 10] and [50,60]
>> using Maxima and SymPy (this is only an example to illustrate the proposed
>> functionality; gamma does not currently have the option to be evaluated
>> with different backends). benchmark_function(gamma, domains=[[-10 -
>> 10*I, 10 - 5*I]], ring=CC) would benchmark gamma on the region of the
>> complex plane bounded by the two points -10 - 10i and 10 - 5i. The current
>> output format of the Benchmark class in benchmark.py should be changed
>> to be machine-readable.
>>
>
>
> After the benchmark framework is completed, I would determine appropriate
>> domains on which to test each of the special functions, and create a
>> benchmark suite. Using the results of these benchmarks, I will modify the
>> functions that have multiple backends to use the optimal one for a given
>> domain
>
>
>
> 3. Hypergeometric functions
>> #2516 <http://trac.sagemath.org/sage_trac/ticket/2516> is going to
>> implement generalized hypergeometric functions. These are a class of
>> holonomic functions, solutions to linear differential equations with
>> polynomial coefficients. Holonomic power series are closed under sum,
>> Cauchy product, and Hadamard product, so these operations could be
>> implemented. Useful references include 
>> 1<http://www.risc.jku.at/research/combinat/software/GeneratingFunctions/pub/mallinger96.pdf>
>>  and
>> 2<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.187.6502&rep=rep1&type=pdf>
>> .
>
>
> My mentors for this project are Flavia Stan and Burcin Erocal.
>
> Now is the Community Bonding period; since I am already acquainted with
> Sage and the community I can get to work :) I will be at Sage Days 48 in
> Seattle.
>
> If anyone has any comments, suggestions, or additional ideas please let me
> know.
>
> Thank you,
> Eviatar Bach
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-devel@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-devel?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to