# Identification polynomial

 0 I have a function with one parameter. How can I check whether this parameter is a polynomial? (Univariate or multvariate, does'nt count which is the base ring) I want use this information in a multilevel if construction asked Nov 14 '10 czsan 153 ● 1 ● 7 ● 16

 1 Will something like this work? sage: is_polynomial = lambda s: all(s.is_polynomial(v) for v in s.variables()) sage: var("x y z") (x, y, z) sage: is_polynomial(x) True sage: is_polynomial(3+x+x**7) True sage: is_polynomial(3+x*exp(x)) False sage: is_polynomial(3*x*y) True sage: is_polynomial(3*x*y+sin(y)) False   posted Nov 14 '10 DSM 4882 ● 12 ● 65 ● 105 Thank you, but it is a partial solution, becaus I do'nt know, the parameter has varibales() property or not. For example : a=2 is_polynomial(a) generates an AttributeError. I believed, the .parent() will help me, but there are rings without this property. czsan (Nov 15 '10) Ah, so you don't even know that it's an Expression, then. Maybe casting it would suffice: is_polynomial = lambda s: all(SR(s).is_polynomial(v) for v in SR(s).variables()) but I'm not clear on your use cases (and how much information you want to preserve). DSM (Nov 15 '10) Yes, I don't know, the parameter is a number or a polynom. After some preparation the algoritm is same (for example, gcd, cra). but the preparation and some little aid-functions depend on the parent ring. czsan (Nov 15 '10) So does casting your parameter explicitly into an Expression by wrapping it in SR suffice for your case, or do we need to work harder? DSM (Nov 15 '10) I think it's hard. What do you mean on 'SR suffice'? czsan (Nov 18 '10) see 1 more comment

[hide preview]