Bug #1634
Unexpected or unhelpful error using GroebnerFanIdeals
Description
Here is the troublesome input: it throws ArgTooBig
/**/ use QQ[x,y,z,t]; /**/ I := ideal(y^9*t-x, x^9*y-z^9*t, x^10-z*t, x*z^9-t^9); /**/ SetVerbosityLevel(20); /**/ GF := GroebnerFanIdeals(I); *..*..*...*...*...*.--> ERROR: Argument to a numerical function too large (value would be too big) --> [CoCoALib] OrdvArith::MatrixOrderingMod32749Impl ctor --> WHERE: at line 89 (column 8) of GroebnerFan.cpkg5 --> P := NewPolyRing(CoeffRing(RingOf(I)), IndetSymbols(RingOf(I)), M, 0); --> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Related issues
History
#1
Updated by John Abbott over 2 years ago
I find the error quite surprising; at least the particular error that was thrown.
I had half expected there to be some problem (e.g. too many different ideals).
Is it just an overly entry in the order matrix?
Anyway, a more helpful message would be nice.
#2
Updated by John Abbott over 2 years ago
- Related to Design #984: GroebnerFanIdeals: order matrices sometimes have "large" entries added
#3
Updated by John Abbott over 2 years ago
Here is a simpler failing example: I have just reduced the exponents
/**/ I := ideal(y^4*t-x, x^4*y-z^4*t, x^5-z*t, x*z^4-t^4);
If I reduce the exponents by 1 to 3 or 4 then the GFan computation completes.
#4
Updated by Anna Maria Bigatti over 2 years ago
The problem is that the ordering matrix has some big entry (after being converted into a matrix with positive entries).
Indeed I find the error message too verbose. I'd change "ERROR: Argument to a numerical function too large (value would be too big)" into:
ERROR: Number too big
#5
Updated by John Abbott about 2 months ago
- Status changed from New to In Progress
- Target version changed from CoCoA-5.4.2 to CoCoA-5.4.4
- % Done changed from 0 to 10
This specific problem does not arise on a platform with 64-bit long
; though no doubt a larger example would eventually trigger a problem.
Anna is probably right that the error message is too long, though I find her proposal too terse.
Maybe a reasonable compromise would be to remove the last part of the error message (in brackets)?
A better solution might be to intercept the exception, and replace it with one whose message is more comprehensible (in the context).
PS the reduced example produce a GFan with 2112 components. It took about 53s.
PPS I increased the exponents by 1: GFan contained 5871 components, and took about 183s