Thank you Benjamin! I will probably take you up on that offer.

On Tuesday, 28 May 2013 12:17:25 UTC-7, Benjamin Jones wrote:
>
> Awesome! Ping me if you need someone to help with code review.
>
> --
> Benjamin Jones
> benjami...@gmail.com <javascript:>
>
>
> On Tue, May 28, 2013 at 11:48 AM, Eviatar <eviat...@gmail.com<javascript:>
> > 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_element method. 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+...@googlegroups.com <javascript:>.
>> To post to this group, send email to sage-...@googlegroups.com<javascript:>
>> .
>> 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