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)

 

>
> On Apr 21, 2017 05:10, "Dima Pasechnik" <dim...@gmail.com <javascript:>> 
> 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 <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.

Reply via email to