On Saturday, April 22, 2017 at 2:10:48 AM UTC+1, David Roe wrote: > > > > On Fri, Apr 21, 2017 at 11:29 AM, Dima Pasechnik <dim...@gmail.com > <javascript:>> 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 > >> >> Is there a "normal" way to trace all the coersion/conversion steps for a given Sage expression? If not, there should be one, IMHO (otherwise it's always a huge guessing game for this sort of issues)
> >> >>> >>> 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+...@googlegroups.com <javascript:>. >> To post to this group, send email to sage-...@googlegroups.com >> <javascript:>. >> 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.