コード例 #1
0
ファイル: constants.py プロジェクト: mcognetta/sage
    def __init__(self, name, conversions=None, latex=None, mathml="",
                 domain='complex'):
        """
        EXAMPLES::

            sage: from sage.symbolic.constants import Constant
            sage: p = Constant('p')
            sage: loads(dumps(p))
            p
        """
        self._conversions = conversions if conversions is not None else {}
        self._latex = latex if latex is not None else name
        self._mathml = mathml
        self._name = name
        self._domain = domain

        for system, value in self._conversions.items():
            setattr(self, "_%s_"%system, partial(self._generic_interface, value))
            setattr(self, "_%s_init_"%system, partial(self._generic_interface_init, value))

        from sage.libs.pynac.constant import PynacConstant
        self._pynac = PynacConstant(self._name, self._latex, self._domain)
        self._serial = self._pynac.serial()
        constants_table[self._serial] = self
        constants_name_table[self._name] = self

        register_symbol(self.expression(), self._conversions)
コード例 #2
0
    def __init__(self,
                 name,
                 conversions=None,
                 latex=None,
                 mathml="",
                 domain='complex'):
        """
        EXAMPLES::

            sage: from sage.symbolic.constants import Constant
            sage: p = Constant('p')
            sage: loads(dumps(p))
            p
        """
        self._conversions = conversions if conversions is not None else {}
        self._latex = latex if latex is not None else name
        self._mathml = mathml
        self._name = name
        self._domain = domain

        for system, value in self._conversions.items():
            setattr(self, "_%s_" % system,
                    partial(self._generic_interface, value))
            setattr(self, "_%s_init_" % system,
                    partial(self._generic_interface_init, value))

        from sage.libs.pynac.constant import PynacConstant
        self._pynac = PynacConstant(self._name, self._latex, self._domain)
        self._serial = self._pynac.serial()
        constants_table[self._serial] = self
        constants_name_table[self._name] = self

        register_symbol(self.expression(), self._conversions)
コード例 #3
0
ファイル: log.py プロジェクト: yarv/sage
        if m == 1:
            return r"H_{%s}" % z
        else:
            return r"H_{{%s},{%s}}" % (z, m)


harmonic_number = Function_harmonic_number_generalized()


def _swap_harmonic(a, b):
    return harmonic_number(b, a)


from sage.libs.pynac.pynac import register_symbol

register_symbol(_swap_harmonic, {'maxima': 'gen_harmonic_number'})
register_symbol(_swap_harmonic, {'maple': 'harmonic'})


class Function_harmonic_number(BuiltinFunction):
    r"""
    Harmonic number function, defined by:

    .. MATH::

        H_{n}=H_{n,1}=\sum_{k=1}^n\frac1k

        H_{s}=\int_0^1\frac{1-x^s}{1-x}

    See the docstring for :meth:`Function_harmonic_number_generalized`.
コード例 #4
0
ファイル: log.py プロジェクト: mcognetta/sage
            H_{x}
            sage: latex(harmonic_number(x,2))
            H_{{x},{2}}
        """
        if m == 1:
            return r"H_{%s}" % z
        else:
            return r"H_{{%s},{%s}}" % (z, m)

harmonic_number = Function_harmonic_number_generalized()

def _swap_harmonic(a,b): return harmonic_number(b,a)

from sage.libs.pynac.pynac import register_symbol

register_symbol(_swap_harmonic,{'maxima':'gen_harmonic_number'})
register_symbol(_swap_harmonic,{'maple':'harmonic'})

class Function_harmonic_number(BuiltinFunction):
    r"""
    Harmonic number function, defined by:

    .. MATH::

        H_{n}=H_{n,1}=\sum_{k=1}^n\frac1k

        H_{s}=\int_0^1\frac{1-x^s}{1-x}

    See the docstring for :meth:`Function_harmonic_number_generalized`.

    This class exists as callback for ``harmonic_number`` returned by Maxima.
コード例 #5
0
        raise TypeError(
            "Symbolic function psi takes at most 2 arguments (%s given)" %
            (len(args) + 1))
    return psi2(x, args[0], **kwds)


# We have to add the wrapper function manually to the symbol_table when we have
# two functions with different number of arguments and the same name
symbol_table['functions']['psi'] = psi


def _swap_psi(a, b):
    return psi(b, a)


register_symbol(_swap_psi, {'giac': 'Psi'})


class Function_beta(GinacFunction):
    def __init__(self):
        r"""
        Return the beta function.  This is defined by

        .. MATH::

            \operatorname{B}(p,q) = \int_0^1 t^{p-1}(1-t)^{q-1} dt

        for complex or symbolic input `p` and `q`.
        Note that the order of inputs does not matter:
        `\operatorname{B}(p,q)=\operatorname{B}(q,p)`.
コード例 #6
0
###############################################################################
from __future__ import print_function
from __future__ import absolute_import

import math
from functools import partial
from sage.rings.infinity import (infinity, minus_infinity, unsigned_infinity)

constants_table = {}
constants_name_table = {}
constants_name_table[repr(infinity)] = infinity
constants_name_table[repr(unsigned_infinity)] = unsigned_infinity
constants_name_table[repr(minus_infinity)] = minus_infinity

from sage.libs.pynac.pynac import register_symbol, I
register_symbol(infinity, {'maxima': 'inf'})
register_symbol(minus_infinity, {'maxima': 'minf'})
register_symbol(unsigned_infinity, {'maxima': 'infinity'})
register_symbol(I, {'mathematica': 'I'})


def unpickle_Constant(class_name, name, conversions, latex, mathml, domain):
    """
    EXAMPLES::

        sage: from sage.symbolic.constants import unpickle_Constant
        sage: a = unpickle_Constant('Constant', 'a', {}, 'aa', '', 'positive')
        sage: a.domain()
        'positive'
        sage: latex(a)
        aa
コード例 #7
0
ファイル: gamma.py プロジェクト: sagemath/sage
        gamma(4/3)
        sage: gamma(4/3, 1)._mathematica_().sage()    # indirect doctest, optional - mathematica
        gamma(4/3, 1)
        sage: mathematica('Gamma[4/3, 0, 1]').sage()  # indirect doctest, optional - mathematica
        gamma(4/3) - gamma(4/3, 1)
    """
    if not args or len(args) > 3:
        raise TypeError("Mathematica function Gamma takes 1 to 3 arguments"
                        " (%s given)" % (len(args)))
    elif len(args) == 3:
        return gamma_inc(args[0], args[1]) - gamma_inc(args[0], args[2])
    else:
        return gamma(*args)


register_symbol(_mathematica_gamma, dict(mathematica='Gamma'))


class Function_psi1(GinacFunction):
    def __init__(self):
        r"""
        The digamma function, `\psi(x)`, is the logarithmic derivative of the
        gamma function.

        .. MATH::

            \psi(x) = \frac{d}{dx} \log(\Gamma(x)) = \frac{\Gamma'(x)}{\Gamma(x)}

        EXAMPLES::

            sage: from sage.functions.gamma import psi1
コード例 #8
0
ファイル: constants.py プロジェクト: timgates42/sage
#                  http://www.gnu.org/licenses/
###############################################################################

import math
from functools import partial
from sage.rings.infinity import (infinity, minus_infinity, unsigned_infinity)
from sage.structure.richcmp import richcmp_method, op_EQ, op_GE, op_LE

constants_table = {}
constants_name_table = {}
constants_name_table[repr(infinity)] = infinity
constants_name_table[repr(unsigned_infinity)] = unsigned_infinity
constants_name_table[repr(minus_infinity)] = minus_infinity

from sage.libs.pynac.pynac import register_symbol, I
register_symbol(infinity, {'maxima': 'inf'})
register_symbol(minus_infinity, {'maxima': 'minf'})
register_symbol(unsigned_infinity, {'maxima': 'infinity'})
register_symbol(I, {'mathematica': 'I'})
register_symbol(True, {
    'giac': 'true',
    'mathematica': 'True',
    'maxima': 'true'
})
register_symbol(False, {
    'giac': 'false',
    'mathematica': 'False',
    'maxima': 'false'
})

コード例 #9
0
ファイル: gamma.py プロジェクト: wilsonify/sage
        gamma(4/3)
        sage: gamma(4/3, 1)._mathematica_().sage()    # indirect doctest, optional - mathematica
        gamma(4/3, 1)
        sage: mathematica('Gamma[4/3, 0, 1]').sage()  # indirect doctest, optional - mathematica
        gamma(4/3) - gamma(4/3, 1)
    """
    if not args or len(args) > 3:
        raise TypeError("Mathematica function Gamma takes 1 to 3 arguments"
                        " (%s given)" % (len(args)))
    elif len(args) == 3:
        return gamma_inc(args[0], args[1]) - gamma_inc(args[0], args[2])
    else:
        return gamma(*args)


register_symbol(_mathematica_gamma, dict(mathematica='Gamma'))


class Function_psi1(GinacFunction):
    def __init__(self):
        r"""
        The digamma function, `\psi(x)`, is the logarithmic derivative of the
        gamma function.

        .. MATH::

            \psi(x) = \frac{d}{dx} \log(\Gamma(x)) = \frac{\Gamma'(x)}{\Gamma(x)}

        EXAMPLES::

            sage: from sage.functions.gamma import psi1
コード例 #10
0
ファイル: constants.py プロジェクト: mcognetta/sage
from __future__ import print_function
from __future__ import absolute_import

import math
from functools import partial
from sage.rings.infinity import (infinity, minus_infinity,
                                 unsigned_infinity)

constants_table = {}
constants_name_table = {}
constants_name_table[repr(infinity)] = infinity
constants_name_table[repr(unsigned_infinity)] = unsigned_infinity
constants_name_table[repr(minus_infinity)] = minus_infinity

from sage.libs.pynac.pynac import register_symbol, I
register_symbol(infinity, {'maxima':'inf'})
register_symbol(minus_infinity, {'maxima':'minf'})
register_symbol(unsigned_infinity, {'maxima':'infinity'})
register_symbol(I, {'mathematica':'I'})


def unpickle_Constant(class_name, name, conversions, latex, mathml, domain):
    """
    EXAMPLES::

        sage: from sage.symbolic.constants import unpickle_Constant
        sage: a = unpickle_Constant('Constant', 'a', {}, 'aa', '', 'positive')
        sage: a.domain()
        'positive'
        sage: latex(a)
        aa