Karim Belabas on Thu, 10 Apr 2014 21:21:39 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: +oo / -oo (infinity) |
* Charles Greathouse [2014-04-10 17:13]: > Has gp2c been informed of the changes? Of course ! As an unwanted side effect, gp2c must currently translate poldegree() to the wrapper gppoldegree() -- which returns a GEN, either a t_INT or a t_INFINITY -- , instead of 'degpol' (which returns a long). > Do we need a new union type (like mp > = int U real) which includes infinities? I don't think so. No "ordinary" computation can produce +oo / -oo from scratch: currently only valuations / degree (and negation, but you have to start from an infinity to get back one). It's rather a "name" (well, two names). Besides the uses already mentionned in my previous mail, it can be used as a sentinel, e.g. MAX(v) = my(m = -oo); for (i = 1, #v, if (v[i] > m, m = v[i])); m; which is slightly more elegant than MAXold(v) = { if (#v == 0, return ("undef")); my(m = v[1]); for (i = 2, #v, if (v[i] > m, m = v[i])); m; } (of course, vecmax is available !). N.B. before this new symbol, - valuation(0) returned the "impossible value" 2^31-1 or 2^63-1 (LONG_MAX, the recommanded old construction was to test valuation(x) == valuation(0) ...) - poldegree(0) returned "a negative number whose precise value should not be used". Unfortunately the test poldegree(T) < 0 was not perfect since poldegree also allows rational functions (t_RFRAC) - \pm\infty was coded as [1] or [-1] in numerical integration routines. Etc. It felt right to introduce a convenient common name for all these situations, to replace the old (working but awkward) "hacks". Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] `