Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: unsupported operand type(s) for >>: 'mpz' and 'mpf' with the printer #6134

Closed
asmeurer opened this issue Jan 31, 2012 · 3 comments · Fixed by #8416
Closed

TypeError: unsupported operand type(s) for >>: 'mpz' and 'mpf' with the printer #6134

asmeurer opened this issue Jan 31, 2012 · 3 comments · Fixed by #8416

Comments

@asmeurer
Copy link
Member

Everything is just a regular Symbol (no assumptions).

In [200]: lamda*x*Integral(phi(t)*pi*sin(pi*t), (t, 0, 1))
Out[200]: 
    1                   
    ⌠                   
λ⋅x⋅⎮ π⋅φ(t)⋅sin(π⋅t) dt
    ⌡                   
    0                   

In [201]: lamda*x**2*Integral(phi(t)*2*pi*sin(2*pi*t), (t, 0, 1))
Out[201]: 
     1                       
   2 ⌠                       
λ⋅x ⋅⎮ 2⋅π⋅φ(t)⋅sin(2⋅π⋅t) dt
     ⌡                       
     0                       

In [202]: lamda*x*Integral(phi(t)*pi*sin(pi*t), (t, 0, 1)) + lamda*x**2*Integral(phi(t)*2*pi*sin(2*pi*t), (t, 0, 1))
Out[202]: ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/Users/aaronmeurer/Documents/Python/sympy/sympy/<ipython-input-202-f879c6e99f81> in <module>()
----> 1 lamda*x*Integral(phi(t)*pi*sin(pi*t), (t, 0, 1)) + lamda*x**2*Integral(phi(t)*2*pi*sin(2*pi*t), (t, 0, 1))

/Users/aaronmeurer/Documents/ipython/IPython/core/displayhook.pyc in __call__(self, result)

/Users/aaronmeurer/Documents/ipython/IPython/core/displayhook.pyc in compute_format_data(self, result)

/Users/aaronmeurer/Documents/ipython/IPython/core/formatters.pyc in format(self, obj, include, exclude)

/Users/aaronmeurer/Documents/ipython/IPython/core/formatters.pyc in __call__(self, obj)

/Users/aaronmeurer/Documents/ipython/IPython/lib/pretty.pyc in pretty(self, obj)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/interactive/printing.pyc in _pretty_print(arg, p, cycle)
     25     def _pretty_print(arg, p, cycle):
     26         """caller for pretty, for use in IPython 0.11"""
---> 27         p.text(stringify_func(arg))
     28 
     29     def _result_display(self, arg):

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/printing/pretty/pretty.pyc in pretty(expr, **settings)
   1396     uflag = pretty_use_unicode(use_unicode)
   1397 
-> 1398     try:
   1399         return pp.doprint(expr)
   1400     finally:

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/printing/pretty/pretty.pyc in doprint(self, expr)
     40             return pretty_use_unicode()
     41 
---> 42     def doprint(self, expr):
     43         return self._print(expr).render(**self._settings)
     44 

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/printing/printer.pyc in _print(self, expr, *args)
    252                 printmethod = '_print_' + cls.__name__
    253                 if hasattr(self, printmethod):
--> 254                     return getattr(self, printmethod)(expr, *args)
    255 
    256             # Unknown object, fall back to the emptyPrinter.


/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/printing/pretty/pretty.pyc in _print_Add(self, expr, order)
    949         if self.order == 'none':
    950             terms = list(expr.args)
--> 951         else:
    952             terms = self._as_ordered_terms(expr, order=order)
    953         pforms, indices = [], []

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/printing/printer.pyc in _as_ordered_terms(self, expr, order)
    266             return sorted(Add.make_args(expr), key=cmp_to_key(Basic._compare_pretty))
    267         else:
--> 268             return expr.as_ordered_terms(order=order)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.pyc in as_ordered_terms(self, order, data)
    471         """
    472         key, reverse = self._parse_order(order)
--> 473         terms, gens = self.as_terms()
    474 
    475         if not any(term.is_Order for term, _ in terms):

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.pyc in as_terms(self)
    510                     if factor.is_number:
    511                         try:
--> 512                             coeff *= complex(factor)
    513                         except ValueError:
    514                             pass

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.pyc in __complex__(self)
    162 
    163     def __complex__(self):
--> 164         result = self.evalf()
    165         re, im = result.as_real_imag()
    166         return complex(float(re), float(im))

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf(self, n, subs, maxn, chop, strict, quad, verbose)
   1053             options['subs'] = subs
   1054         if quad is not None:
-> 1055             options['quad'] = quad
   1056         try:
   1057             result = evalf(self, prec+4, options)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf(x, prec, options)
    970 def evalf(x, prec, options):
    971     from sympy import re as re_, im as im_
--> 972     try:
    973         rf = evalf_table[x.func]
    974         r = rf(x, prec, options)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf_integral(expr, prec, options)
    756     workprec = prec
    757     i = 0
--> 758     maxprec = options.get('maxprec', INF)
    759     while 1:
    760         result = do_integral(expr, workprec, options)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in do_integral(expr, prec, options)
    721             result = quadosc(f, [xlow, xhigh], period=period)
    722             # XXX: quadosc does not do error detection yet

--> 723             quadrature_error = MINUS_INF
    724         else:
    725             result, quadrature_error = quadts(f, [xlow, xhigh], error=1)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/calculus/quadrature.pyc in quadts(ctx, *args, **kwargs)
    784         """
    785         kwargs['method'] = 'tanh-sinh'
--> 786         return ctx.quad(*args, **kwargs)
    787 
    788     def quadgl(ctx, *args, **kwargs):

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/calculus/quadrature.pyc in quad(ctx, f, *points, **kwargs)
    741             ctx.prec += 20
    742             if dim == 1:
--> 743                 v, err = rule.summation(f, points[0], prec, epsilon, m, verbose)
    744             elif dim == 2:
    745                 v, err = rule.summation(lambda x: \

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/calculus/quadrature.pyc in summation(self, f, points, prec, epsilon, max_degree, verbose)
    230                     print("Integrating from %s to %s (degree %s of %s)" % \
    231                         (ctx.nstr(a), ctx.nstr(b), degree, max_degree))
--> 232                 results.append(self.sum_next(f, nodes, degree, prec, results, verbose))
    233                 if degree > 1:
    234                     err = self.estimate_error(results, prec, epsilon)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/calculus/quadrature.pyc in sum_next(self, f, nodes, degree, prec, previous, verbose)
    302         else:
    303             S = self.ctx.zero
--> 304         S += self.ctx.fdot((w,f(x)) for (x,w) in nodes)
    305         return h*S
    306 

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/ctx_mp_python.pyc in fdot(ctx, A, B, conjugate)
    923         hasattr_ = hasattr
    924         types = (ctx.mpf, ctx.mpc)
--> 925         for a, b in A:
    926             if type(a) not in types: a = ctx.convert(a)
    927             if type(b) not in types: b = ctx.convert(b)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/calculus/quadrature.pyc in <genexpr>((x, w))
    302         else:
    303             S = self.ctx.zero
--> 304         S += self.ctx.fdot((w,f(x)) for (x,w) in nodes)
    305         return h*S
    306 

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in f(t)
    694         max_real_term = [MINUS_INF]
    695         max_imag_term = [MINUS_INF]
--> 696 
    697         def f(t):
    698             re, im, re_acc, im_acc = evalf(func, mp.prec, {'subs':{x:t}})

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf(x, prec, options)
    970 def evalf(x, prec, options):
    971     from sympy import re as re_, im as im_
--> 972     try:
    973         rf = evalf_table[x.func]
    974         r = rf(x, prec, options)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf_mul(v, prec, options)
    367     # i**direction

    368     for arg in args:
--> 369         re, im, re_acc, im_acc = evalf(arg, prec, options)
    370         if re and im:
    371             complex_factors.append((re, im, re_acc, im_acc))

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.pyc in evalf(x, prec, options)
    977         try:
    978             # Fall back to ordinary evalf if possible

--> 979             if 'subs' in options:
    980                 x = x.subs(evalf_subs(prec, options['subs']))
    981             re, im = x._eval_evalf(prec).as_real_imag()

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/function.pyc in _eval_evalf(self, prec)
    285             nargs = cls.nargs
    286 
--> 287             i = 0 if nargs is None else 10000
    288 
    289         return 4, i, name

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/ctx_mp_python.pyc in __call__(self, prec, dps, rounding)
    344         if not rounding: rounding = rounding2
    345         if dps: prec = dps_to_prec(dps)
--> 346         return self.context.make_mpf(self.func(prec, rounding))
    347 
    348     @property

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/libmp/libelefun.pyc in f(prec, rnd)
    114     def f(prec, rnd=round_fast):
    115         wp = prec + 20
--> 116         v = fixed(wp)
    117         if rnd in (round_up, round_ceiling):
    118             v += 1

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/mpmath/libmp/libelefun.pyc in g(prec, **kwargs)
     95         memo_prec = f.memo_prec
     96         if prec <= memo_prec:
---> 97             return f.memo_val >> (memo_prec-prec)
     98         newprec = int(prec*1.05+10)
     99         f.memo_val = f(newprec, **kwargs)

TypeError: unsupported operand type(s) for >>: 'mpz' and 'mpf'

Original issue for #6134: http://code.google.com/p/sympy/issues/detail?id=3035
Original author: https://code.google.com/u/asmeurer@gmail.com/

@asmeurer
Copy link
Member Author

**Status:** Valid  

Original comment: http://code.google.com/p/sympy/issues/detail?id=3035#c1
Original author: https://code.google.com/u/asmeurer@gmail.com/

@pelegm
Copy link
Contributor

pelegm commented Nov 9, 2014

Is this error still valid? Tried it here and it seems to work.

@skirpichev skirpichev removed the valid label Nov 9, 2014
@skirpichev
Copy link
Contributor

Yes, it looks as fixed. But we should add a test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants