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)
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)
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`.
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.
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)`.
############################################################################### 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
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
# 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' })
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