Ticket #7357: li(x).patch

File li(x).patch, 2.5 KB (added by myurko, 10 years ago)
  • sage/functions/all.py

    # HG changeset patch
    # User Michael Yurko <myurko@gmail.com>
    # Date 1256420492 14400
    # Node ID 2a871d1a48d07eda4e716c7c61d08637c7bb3927
    # Parent  1fac9be25e7f4993428e2d758c570143ab1707c6
    Add the non-offset logarithmic integral, li(x).
    
    diff -r 1fac9be25e7f -r 2a871d1a48d0 sage/functions/all.py
    a b  
    2626from transcendental import (exponential_integral_1,
    2727                            gamma_inc, incomplete_gamma,
    2828                            zeta, zeta_symmetric,
    29                             Li, Ei,
     29                            Li, li, Ei,
    3030                            dickman_rho)
    3131
    3232from special import (bessel_I, bessel_J, bessel_K, bessel_Y,
  • sage/functions/transcendental.py

    diff -r 1fac9be25e7f -r 2a871d1a48d0 sage/functions/transcendental.py
    a b  
    2424import sage.rings.complex_field as complex_field
    2525import sage.rings.real_double as real_double
    2626import sage.rings.complex_number
    27 from sage.gsl.integration import numerical_integral
    2827
    2928from sage.rings.all import (is_RealNumber, RealField,
    3029                            is_ComplexNumber, ComplexField,
     
    344343    finally:
    345344        mp.mp.prec = old_prec
    346345    return mp.mpmath_to_sage(mp_ret,prec)
     346   
     347def li(x, prec = None):
     348    r"""
     349    Computes li(x).
     350   
     351    This is the function
     352   
     353    .. math::
     354   
     355                mathrm{li}(x) = int_0^x frac{1}{log t} , dt     
     356               
     357    Note that li has a singularity at x = 1 and will return -infinity and
     358    that this function is different from Li(x), the offset logarithmic
     359    integral.
     360   
     361   
     362    ALGORITHM: Computed using mpmath.
     363   
     364    INPUT:
     365   
     366   
     367    -  ``x`` - a number.
     368   
     369   
     370    OUTPUT:
     371   
     372   
     373    -  ``li(x)`` - a number
     374   
     375   
     376    EXAMPLES::
     377   
     378        sage: li(2)
     379        1.04516378011749
     380        sage: li(2)
     381        1.04516378011749
     382        sage: li(5)
     383        3.63458831003265
     384        sage: li(1000)
     385        177.609657990152
     386        sage: li(10^5)
     387        9629.80900105080
     388        sage: prime_pi(10^5)
     389        9592
     390        sage: li(1)
     391        -infinity
     392   
     393    """
     394    if prec == None:
     395        try:
     396            prec = x.prec()
     397        except AttributeError:
     398            prec = 53
     399    import sage.libs.mpmath.all as mp
     400    return mp.call(mp.li,x,prec=prec)
    347401
    348402import math
    349403def _one_over_log(t):