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]