| Karim BELABAS on Tue, 17 Jun 2003 14:50:56 +0200 (MEST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: ceil bug |
On Tue, 17 Jun 2003, Jon Perry wrote:
> Working upon A001399, I developed the formula:
>
> s(n)=6*t(floor(n/6))+(n%6)*(floor(n/6)+1)
>
> with t(n)=n*(n+1)/2
>
> Due to a typing mistake, I inadvertently typed:
>
> s=6*t(floor(n/6))+(n%6)*(floor(n/6)+1)
>
> and Pari produced 1/12*n^2 + 1/2*n
>
> Testing this doesn't produce the sequence in question
It is not a bug: PARI is not a Computer Algebra System and makes no attempt
at handling _formulas_, and simplifying them to equivalent forms. All results
are immediately evaluated, according to some (more or less) formal definition
(hopefully) present in the documentation.
(14:37) gp > ??floor
floor(x):
[...] Applied to a rational function, floor(x) returns the euclidian
quotient of the numerator by the denominator.
[ Note: numerator and denominator are themselves defined according to
"Variable priority" rules, with possibly surprising side effects, see Manual,
section 2.6.2. ]
In particular, for a polynomial, floor(z) := z.
Again, results may be surprising due to variable priorities:
(14:34) gp > floor(x/y) \\ polynomial (1/y) * x
%1 = 1/y*x
(14:37) gp > floor(y/x) \\ rational function (y * x^0) / (x)
%2 = 0
Karim.
P.S: I have just added explicit pointers to section 2.6.2 in the extended help
for "numerator" and "denominator", and fixed an indexing bug which caused
(14:48) gp > ??"Variable priorities"@
to fail ( needed ??"Variable priorities:"@ ). Cf
(14:48) gp > ???priority@2
? Polmods Polynomials
See also:
GP operators
Variable priorities
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://www.parigp-home.de/ [PARI/GP]