Opened 9 years ago

Last modified 8 years ago

## #13609 closed defect

# symbolic arithmetic errors — at Initial Version

Reported by: | llpamies | Owned by: | tbd |
---|---|---|---|

Priority: | major | Milestone: | sage-6.2 |

Component: | symbolics | Keywords: | pynac segfault |

Cc: | Merged in: | ||

Authors: | Reviewers: | ||

Report Upstream: | N/A | Work issues: | |

Branch: | Commit: | ||

Dependencies: | Stopgaps: |

### Description

Consider the following code:

ff.<z> = GF(2**8, 'z') poly.<c1,c2,c3> = PolynomialRing(ff, 3, 'c') r1,r2 = var('r1,r2') expression = -(c1*r2 - c2*r1)/c3 print expression.substitute(r1=z, r2=z)

This produces a TypeError?: unsupported operand parent(s) for '*': 'Finite Field in z of size 2pow8' and 'Rational Field'. I know that 'expression' is not an element of the ring 'poly', but using a PolynomialRing? is the only way I found to achieve symbolic arithmetic on finite fields.

However, the interesting story is that if I replace the expression by

expression = -(r2 - c2*r1)/c3

it work perfectly well, but if instead the expression is

expression = -(c1 + r2 - c2*r1)/c3

then I get a segmentation fault.

To make things a little bit more interesting I can rename r1 and r2 to a and b:

ff.<z> = GF(2**8, 'z') poly.<c1,c2,c3> = PolynomialRing(ff, 3, 'c') a,b = var('a,b') expression = -(c1*b - c2*a)/c3 print expression.substitute(a=z, b=z)

Then it works fine, but produces a segmentation fault for,

expression = -(c1 + b - c2*a)/c3

so you can think that it might be a problem with the use of the names r1 and r2. But this is not the case, if I rename the PolynomialRing? variables instead, from c's to x's:

ff.<z> = GF(2**8, 'z') poly.<x1,x2,x3> = PolynomialRing(ff, 3, 'x') r1,r2 = var('r1,r2') expression = -(x1*r2 - x2*r1)/x3 print expression.substitute(r1=z, r2=z)

Then it works again for the first two expressions but produces a segmentation fault for the third too.

Any idea of what is going wrong here?

**Note:**See TracTickets for help on using tickets.