On Fri, Apr 21, 2017 at 11:29 AM, Dima Pasechnik <dimp...@gmail.com> wrote:
> > > On Friday, April 21, 2017 at 3:46:03 PM UTC+1, David Roe wrote: >> >> Quick guess (don't have time to look at this soon): the issue could be in >> the action discovery code, which may try creating elements of numpy.float32 >> using weird inputs. This could cause a difference between right and left >> multiplication. One way to check if this is the source is to try converting >> each of the polynomials from RR['x'].some_elements() into numpy.float32 and >> see if you get the same error. >> > > no, this does not give anything that looks like the error in question (no > errors on degree 0 terms, > "ValueError: setting an array element with a sequence." on degree >0 terms) > Sorry, I don't have any other ideas, and can't play around with it easily since the standard Sage build isn't producing these errors. David > > > >> >> On Apr 21, 2017 05:10, "Dima Pasechnik" <dim...@gmail.com> wrote: >> >> On Friday, April 21, 2017 at 9:11:37 AM UTC+1, Marc Mezzarobba wrote: >>> >>> Dima Pasechnik wrote: >>> > but it looks as if it might be a coercion problem. >>> > Any ideas where to look? >>> >>> Not really, but it does look like the common parent >>> discovered by the coercion system is incorrect: >>> >>> sage: import numpy as np >>> sage: a = np.float('1.5') >>> sage: b = np.float32('1.5') >>> >> >> >>> sage: get_coercion_model().common_parent(b, polygen(RR)) >>> Univariate Polynomial Ring in x over Real Field with 53 bits of >>> precision >>> >>> sage: RR.coerce(a) >>> 1.50000000000000 >>> >>> sage: RR.coerce(b) >>> ... >>> TypeError: no canonical coercion from <type 'numpy.float32'> to Real >>> Field with 53 bits of precision >>> >>> sage: get_coercion_model().common_parent(b, RR) >>> <type 'numpy.float32'> >>> >> >> This does not look like this is the root cause of the problem. >> Namely, note that also >> >> sage: a128 = np.float128('1.5') >> sage: RR.coerce(a128) >> # throws the same as above TypeError, but >> sage: a128*x >> # does not print the numpy warning. >> >> what is also somewhat puzzling is >> that while >> sage: np.float32('1.5')*x >> # does print the numpy warning >> >> sage: x*np.float32('1.5') >> # just works (i.e. does not print the numpy warning) >> >> So this is a subtle combination of an apparent bug in numpy (or in clang) >> with >> some Sage coercion weirdness. >> Apparently numpy's floats are coerced into RDF for the purpose of >> dealing with polynomials, see py_scalar_to_element in >> structure/coerce.pyx, but apparently this only happens >> for >> x*np.float32('1.5'), and not for np.float32('1.5')*x ? >> >> Dima >> >> >> >>> -- >>> Marc >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "sage-devel" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sage-devel+...@googlegroups.com. >> To post to this group, send email to sage-...@googlegroups.com. >> Visit this group at https://groups.google.com/group/sage-devel. >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To post to this group, send email to sage-devel@googlegroups.com. > Visit this group at https://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.