CVSROOT: /cvs/purrs
Module name: purrs
Changes by: zolo(a)cs.unipr.it 2003-07-01 14:06:12
Modified files:
src : gosper.cc
Log message:
Fixed a bug in the function `compute_resultant_and_its_roots()':
called the method `Expr::ex_to_number()' only if we are sure that
the expression is numeric.
Patches:
http://www.cs.unipr.it/cgi-bin/cvsweb.cgi/purrs/src/gosper.cc.diff?cvsroot=…
-------- Original Message --------
Subject: Re: Strange behavior of numer_denom
Date: Mon, 30 Jun 2003 20:07:58 +0200
From: Christian Bauer <Christian.Bauer(a)Uni-Mainz.DE>
Reply-To: ginac-list(a)zino.physik.uni-mainz.de
To: ginac-list(a)zino.physik.uni-mainz.de
References: <3EFFEFC8.2090203(a)cs.unipr.it>
Hi!
On Mon, Jun 30, 2003 at 10:07:36AM +0200, Roberto Bagnara wrote:
> There are two problems here: (1) the numerator and denominator returned
> are trivially not coprime;
numer_denom() and normal() have a problem with square roots that get
squared in the process, which I suspect is what happens here (1264 = 16*79).
Patches are welcome...
> and (2) numer_denom does not behave like a mathematical function. With the
> same input, it produces the sequence of answers
>
> {-1264*d,-1264}
> {1264*d,1264}
> [...]
The denominator should always be unit normal (= positive in this case).
This problem should now be fixed in CVS.
Bye,
Christian
--
/ Physics is an algorithm
\/ http://www.uni-mainz.de/~bauec002/
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara@cs.unipr.it
Hi there,
in the following session, numer_denom is computed several times
on the same expression (using the up-arrow history recall mechanism):
$ ./ginsh
ginsh - GiNaC Interactive Shell (GiNaC V1.1.1)
__, _______ Copyright (C) 1999-2003 Johannes Gutenberg University Mainz,
(__) * | Germany. This is free software with ABSOLUTELY NO WARRANTY.
._) i N a C | You are welcome to redistribute it under certain conditions.
<-------------' For details type `warranty;'.
Type ?? for a list of help topics.
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{1264*d,1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{1264*d,1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{1264*d,1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{1264*d,1264}
>
numer_denom((-(4/79*I)*(-1/8+(1/8*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))*sqrt(79))*d-(3/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)+(3/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(-3/32-(3/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(3/32-(3/32*I)*sqrt(79))*sqrt(79)+(-(4/79*I)*(-1/32-(1/32*I)*sqrt(79))*sqrt(79)-(4/79*I)*(1/32-(1/32*I)*sqrt(79))*sqrt(79)+(4/79*I)*(1/8-(1/8*I)*sqrt(79))^2*sqrt(79)-(4/79*I)*(1/8+(1/8*I)*sqrt(79))^2*sqrt(79))*c-3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))^3+3/4*(-(1/8-(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(1/8-(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8-(1/8*I)*sqrt(79))-3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))+3/4*((1/8+(1/8*I)*sqrt(79))^2-(1/4*I)*sqrt(79)+(-1/8+(1/8*I)*sqrt(79))*(1/8+(1/8*I)*sqrt(79)))^(-1)*(1/8+(1/8*I)*sqrt(79))^3);
{-1264*d,-1264}
>
There are two problems here: (1) the numerator and denominator returned
are trivially not coprime; and (2) numer_denom does not behave like a
mathematical function. With the same input, it produces the sequence
of answers
{-1264*d,-1264}
{-1264*d,-1264}
{1264*d,1264}
{-1264*d,-1264}
{-1264*d,-1264}
{1264*d,1264}
{-1264*d,-1264}
{1264*d,1264}
{1264*d,1264}
{-1264*d,-1264}
All the best
Roberto
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara@cs.unipr.it