#16697: implement symbolic lower incomplete gamma function
-------------------------------------+-------------------------------------
       Reporter:  rws                |        Owner:
           Type:  defect             |       Status:  new
       Priority:  major              |    Milestone:  sage-6.3
      Component:  symbolics          |   Resolution:
       Keywords:  gamma,             |    Merged in:
  incomplete, special, functions     |    Reviewers:
        Authors:                     |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  93c2f94cb7e1ca7651a8a8de907bad09ae82428e
  u/rws/implement_symbolic_lower_incomplete_gamma_function|     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------
Description changed by rws:

Old description:

> This is actually a defect because we leave a result from Maxima
> undefined:
> {{{
> sage: hypergeometric([1],[b],x).simplify_hypergeometric()
> (b - 1)*x^(-b + 1)*e^x*gamma_greek(b - 1, x)
> sage: gamma_greek
> ---------------------------------------------------------------------------
> NameError                                 Traceback (most recent call
> last)
> <ipython-input-18-6e90901bc5cb> in <module>()
> ----> 1 gamma_greek
>
> NameError: name 'gamma_greek' is not defined
> }}}
> https://en.wikipedia.org/wiki/Incomplete_gamma_function#Lower_incomplete_Gamma_function
>
> Mathematica seems to have Gamma[a,z] for upper and Gamma[a,0,z] for
> lower; Maple seems to have upper Gamma. `gamma_inc` (the upper one in
> Sage) gets immediately converted to `gamma(a,x)`, so Sage has already
> went the Mathematica path of `gamma(a)=gamma(a,x)+gamma(a,0,x)`. The
> symbolic functions `gamma_inc==incomplete_gamma` are converted and never
> returned to the user as expression:
> {{{
> sage: gamma_inc(x,x,hold=True)
> gamma(x, x)
> sage: incomplete_gamma(x,x,hold=True)
> gamma(x, x)
> sage: assume(x>0)
> sage: integral(t^(s-1)*e^(-t),t,0,x)
> -gamma(s, x) + gamma(s)
> }}}
> So, what's the plan?
>
>  1. Provide all three "user input interfaces" `gamma_inc`,
> `incomplete_gamma` and `lower_incomplete_gamma`, and convert the Maxima
> `gamma_greek` to `-gamma(a, x) + gamma(a)`
>  2. Provide all three "user input interfaces" `gamma_inc`,
> `incomplete_gamma` and `lower_incomplete_gamma`, and convert to
> `gamma(a,x)` and `gamma(a,0,x)`n on output
>  3. Provide all three "user input interfaces" `gamma_inc`,
> `incomplete_gamma` and `lower_incomplete_gamma`, and have
> `incomplete_gamma` and `lower_incomplete_gamma` as result instead of
> `gamma(...)'
>  4. Change the user interface completely to `lower_incomplete_gamma` and
> `upper_incomplete_gamma`
>  5. Change the user interface completely to `gamma_inc_lower` and
> `gamma_inc_upper`
>  6. Change the user interface completely to `gamma(a,x)` and
> `gamma(a,0,x)`

New description:

 This is actually a defect because we leave a result from Maxima undefined:
 {{{
 sage: hypergeometric([1],[b],x).simplify_hypergeometric()
 (b - 1)*x^(-b + 1)*e^x*gamma_greek(b - 1, x)
 sage: gamma_greek
 ---------------------------------------------------------------------------
 NameError                                 Traceback (most recent call
 last)
 <ipython-input-18-6e90901bc5cb> in <module>()
 ----> 1 gamma_greek

 NameError: name 'gamma_greek' is not defined
 }}}
 
https://en.wikipedia.org/wiki/Incomplete_gamma_function#Lower_incomplete_Gamma_function

 Mathematica seems to have Gamma[a,z] for upper and Gamma[a,0,z] for lower;
 Maple seems to have upper Gamma. `gamma_inc` (the upper one in Sage) gets
 immediately converted to `gamma(a,x)`. The symbolic functions
 `gamma_inc==incomplete_gamma` are converted and never returned to the user
 as expression:
 {{{
 sage: gamma_inc(x,x,hold=True)
 gamma(x, x)
 sage: incomplete_gamma(x,x,hold=True)
 gamma(x, x)
 sage: assume(x>0)
 sage: integral(t^(s-1)*e^(-t),t,0,x)
 -gamma(s, x) + gamma(s)
 }}}
 This ticket should deprecate "incomplete_gamma" and add the symbolic
 function `gamma_inc_lower`, leaving open the question of the global alias
 for and the displayed name of `Function_gamma_inc`.

 Previous part of description:
 -------------------------------------

  1. Provide all three "user input interfaces" `gamma_inc`,
 `incomplete_gamma` and `lower_incomplete_gamma`, and convert the Maxima
 `gamma_greek` to `-gamma(a, x) + gamma(a)`
  2. Provide all three "user input interfaces" `gamma_inc`,
 `incomplete_gamma` and `lower_incomplete_gamma`, and convert to
 `gamma(a,x)` and `gamma(a,0,x)`n on output
  3. Provide all three "user input interfaces" `gamma_inc`,
 `incomplete_gamma` and `lower_incomplete_gamma`, and have
 `incomplete_gamma` and `lower_incomplete_gamma` as result instead of
 `gamma(...)'
  4. Change the user interface completely to `lower_incomplete_gamma` and
 `upper_incomplete_gamma`
  5. Change the user interface completely to `gamma_inc_lower` and
 `gamma_inc_upper`
  6. Change the user interface completely to `gamma(a,x)` and
 `gamma(a,0,x)`

--

--
Ticket URL: <http://trac.sagemath.org/ticket/16697#comment:7>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to