- Apr 15, 1998
-
-
dtc authored
-
- Mar 30, 1998
- Mar 27, 1998
-
-
dtc authored
deftransforms to quieten compiler Warnings.
-
- Mar 21, 1998
-
-
dtc authored
-
- Feb 24, 1998
-
-
dtc authored
-
- Feb 20, 1998
-
-
dtc authored
converted to a numeric type and the derive-type-aux function called to compute the result type. This allows a range to be returned for member types. Add a derive-type optimizer for the random function using the above extension. Ensure that the abs derive-type optimiser correctly coerces the result bounds; this optimiser now returns a +0.0 lower bound whereas it had been +-0.0.
-
- Feb 19, 1998
-
-
dtc authored
1. Correct handling of integer and rational arguments which give single-float results. 2. Correct coercion of the number-type bounds. 3. Improve consistency. Functions modified: float-or-complex-type, elfun-derive-type-simple, atan-derive-type-aux-2, phase-derive-type, imagpart-derive-type-aux, trig-derive-type-aux, abs-derive-type-aux. Remove function elfun-float-format. Add function coerce-numeric-bound. Add an optional increasingp argument to elfun-derive-type-simple allowing it to be used for acos, and remove acos-derive-type-aux.
-
- Feb 05, 1998
-
-
dtc authored
Update the trig optimizers so that they compute bounds when the argument is within the "principal" domain of the function. This does not have any problems with argument reduction.
-
- Jan 24, 1998
-
-
dtc authored
single-float result for a real argument whereas the result type should have been a float in this case; only for a rational argument can will the result type be a single-float. This in turn fixes the mis-compiling of some maths functions, for example (exp #C(0d0 1d0)) was returning garbage. Fix a similar problem in the cis derive-type optimizer, however the fix doesn't special case rational arguments, always defaulting to a float.
-
- Jan 05, 1998
-
-
dtc authored
better handle float zeros, by Raymond Toy and Douglas Crosher: * The arithmetic function derive type optimisers now accept intervals for which -0.0 and 0.0 are recognisably different. This will fix naturally into a proposal by Raymond Toy which is conditional upon :negative-zero-is-not-zero. Without this feature the functions {one,two}-arg-derive-type convert the type intervals appropriately before and after these optimisers so that the user visible type specifiers behave the same. * Update interval-range-info to recognise the difference between -0.0 and 0.0. This in turn helps fix the phase derive type optimizer. * Elfun-derive-type-simple now uses a type specifier to giving the applicable range rather then a function; updates to the various uses of this function. * The sqrt and log derive type optimizers have been re-written and now use elfun-derive-type-simple. * Remove the unused function numeric-real-union-type-p. * Extend the expt trnasform to transform powers of 1/2 to sqrt.
-
- Jan 02, 1998
-
-
dtc authored
problems, from Raymond Toy.
-
- Dec 20, 1997
-
-
dtc authored
multitude of problems.
-
- Dec 19, 1997
-
-
dtc authored
-
- Dec 18, 1997
-
-
dtc authored
compiler/srctran.lisp o Modify prepare-arg-for-derive-type to convert member types to a union of member types of a single element. o Modify {one,two}-arg-derive-type to recognize single element member types and directly call the function to return a single-element member-type result. compiler/float-tran.lisp: o Random changes to match the changes in srctran.lisp o Sqrt derive-type optimizer: if the result is real the lower bound is >= 0, was defaulting to NIL in some cases.
-
dtc authored
if the argument is (0.0).
-
- Dec 17, 1997
-
-
dtc authored
appropriate type if there are none. Noted by Raymond Toy.
-
- Dec 16, 1997
- Dec 14, 1997
-
-
dtc authored
-
dtc authored
prior commit, also make them a little smart about the handling of a lower limit of 0 as only a float could be -0.0.
-
dtc authored
compiler/srctran.lisp o Replaced all of the old optimizer routines with new ones that should work much better. Optimizers should now handle all union types and most member types. NOTE: for some reason a member type with both numbers and non-numbers isn't quite handled correctly. The optimizer is only passed the elements of the member type that are numbers; it never sees the non-number elements of the member type. o Fixed a bug in bound-func. Since all of the FP traps are turned off, we now need to check in case the function returns things like infinity and convert them to nil. o Fixed a bug in the computation of bounds for rem. Invalid intervals were sometimes returned. compiler/float-tran.lisp o Mods to handle the changes in srctran.lisp. o All of the optimizers (from propagate-float and propagate-fun) should now handle union types and member types. o Fixed a bug in the atan optimizer for two args with at least one of them not being a real. o For functions that return (or float (complex float)), we try to be more careful and compute the bounds for the float part, since we usually have them. Not sure what we gain, though. -=-=-=- Plus some further cleanups and fixes by Douglas Crosher: o Merge with the latest verion of float-trans: CIS transform; no result types on complex function transforms. o Can use a common scale-float-derive-type-aux function. o complex-derive-type-aux-2 was broken, needed updating to handle changes. o For sqrt and log return an (or float complex) type if the argument type includes 0.0 in its range as 0.0 = -0.0 so the argument may also be -0.0. o A number of the optimizers returned a complex float with invalid intervals just copied from the argument - strip the intervals from the returned type in these cases. o Note no expt optimiser.
-
- Dec 12, 1997
-
-
dtc authored
- For constant arguments, check the actual error after taking the value MOD the limit so that a wider range are acceptable. E.g. Can now inline (random (expt 2 32)) for which there is no error. - On the x86 port use the faster multiplication rather than division for the MOD calculation.
-
- Dec 06, 1997
- Dec 05, 1997
-
-
dtc authored
Raymod Toy. Backout the calls to float-or-complex-type in the sin and cos derive-type optimizers, as these gave problems with union types.
-
- Dec 04, 1997
-
-
dtc authored
Fixed small bug in elfun-derive-type-1: When a complex number is passed in, we don't want to just copy that as the result. We want the same type of complex number but with no bounds included. New function float-or-complex-type to compute the union type (or float (complex float)) with the appropriate type of float and bounds, if needed. At the end compiler/float-tran.lisp, the derive-type optimizers for sin, cos, and tan, are never enabled, because of a misspelling of propagate-fun-type (was progagate-fun-type). Plus a few fixes for these. Added expt derive-type optimizer, should handle all cases. Added derive-type optimizers for conjugate and cis.
-
- Nov 27, 1997
-
-
dtc authored
o Fixed bug in real/imag part optimizers which didn't handle union types. o Added derive-type optimizer for complex. o Added deftransforms for complex operations: o complex-complex ops: + - * / o complex-float ops: + - * / o float-complex ops: + - *
-
- Nov 16, 1997
-
-
dtc authored
argument to %realpart and %imagepart respectively. Enable the realpart and imagpart derive-type optimizers which now work and are important for these functions to be inlined.
-
- Oct 15, 1997
-
-
dtc authored
and tan, that provide the result type and work with union types. The result range which is problematic is not calculated. Removed the old versions.
-
- Oct 09, 1997
-
-
dtc authored
code yet.
-
- Oct 08, 1997
-
-
dtc authored
results.
-
- Sep 20, 1997
-
-
dtc authored
Elfun-derive-type-union didn't properly handle the case of elfun-derive-type-1 returning a union type like (or float (complex float)) - it does now. Elfun-derive-type-1 is slightly enhanced so that if the input is a complex type, the result is a complex type of the same. Before, we just returned default-type. Also, it's a bit smarter now so that if the result is supposed to be (or float (complex float)), we try to refine float to single-float or double-float if possible.
-
- Sep 08, 1997
-
-
pw authored
defined for #+(or :propagate-fun-type :propagate-float-type).
-
- Sep 05, 1997
-
-
dtc authored
-
dtc authored
-
dtc authored
o Added optimizers for ftruncate, ffloor, and fceiling. o Most elementary functions can now handle union types and appropriate bounds are returned. This includes truncate, floor, ceiling, and float. o Some bugs in the optimizers were also fixed because union types are handled now. In particular most functions returned (FLOAT) (or subtype thereof) when in fact the answer should have been (OR FLOAT (COMPLEX FLOAT)). o The optimizer for log now handles the case of (log x y) and returns appropriate bounds for it. (It used to give up in this case.) o The optimizer for atan and phase works better and handles more cases.
-
- Aug 30, 1997
-
-
dtc authored
floating point exceptions disabled. It avoids the overhead of {set,get}-floating-point-modes, saving some consing and generally giving smaller code. Exploit this new macro where {set,get}-floating-point-modes has been used.
-
- Jun 11, 1997
-
-
dtc authored
32 bits on x86 and 31 on other ports.
-
- Jun 03, 1997
-
-
dtc authored
-