Hello everyone!

I'm interested in contributing/working on Sage a bit. Specifically, one of 
my Professor's came up with a faster way to compute q-digamma, at least in 
some cases. I would like to code it up and add it to Sage. A few things are 
in my way at the moment, that I wanted to ask about:

1. It appears we don't have a native q-gamma or q-digamma function. We do 
have access to q-gamma from mpmath. However, a wrapper function in Sage 
hasn't been added yet:
https://trac.sagemath.org/ticket/19032

Would adding this be a simple as importing qgamma from mpmath? My worry in 
implementing it that way is about efficiency. If a user uses calls qgamma 
many times, then it would be doing "from mpmath import qgamma" many times, 
which seems pretty inefficient. Is there a more efficient way of doing 
this? So that it wouldn't keep importing it over and over, or maybe some 
way I could make it so that I don't have to important anything at all. I 
only ask if the latter is possible because when I was looking at the source 
code for the gamma function in sage (I believe it uses GiNaC?), I don't see 
it say "import gamma" anywhere. Does it not have to do that because GiNaC 
isn't in python? Also, is there a reason we don't use mpmath for the gamma 
function? 


2. Going off of what I was talking about in question 1, how can I see the 
implementation of the gamma function? I'm looking at the source in 
sage/functions/other.py:
https://github.com/sagemath/sage/blob/master/src/sage/functions/other.py

but I can't see the code for the actual function. I just see that it calls 
something called gamma1, apparently. What is gamma1 here and where can I 
see the code for the actual function? It mentions that Gamma uses various 
libraries in sage, but it looks like it just uses gamma1(from ginac?) and 
gamma_inc. Is this correct?


3. The formula for q-digamma is for q = 1. Since we don't have an 
implementation of q-digamma as far as i can tell, I was thinking I would 
try to find a library with an implementation of it, import that, and then 
add the q = 1 case implementation as an if statement? And if I can't find a 
library with it, would it work okay to simply write the formula for it 
directly there? Or would that be slow because it's in python? I was 
thinking that since the code gets cythonized, the fact that I'd be writing 
it in python wouldn't be cause it to be slow. 


Sorry, these questions are fairly vague, and I'm not entirely sure whether 
this belonged in devel or support. However, I'd appreciate any advice/info 
you have! 

-- 
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 https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to