Skip to content
Snippets Groups Projects
  1. Apr 15, 1998
  2. Mar 30, 1998
  3. Mar 27, 1998
  4. Mar 21, 1998
  5. Feb 24, 1998
  6. Feb 20, 1998
    • dtc's avatar
      Enhance one-arg-derive-type to optionally allow member types to be · 8a3a13c2
      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.
      8a3a13c2
  7. Feb 19, 1998
    • dtc's avatar
      Rework many of the derive-type optimizers: · 6d9d64ba
      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.
      6d9d64ba
  8. Feb 05, 1998
    • dtc's avatar
      Enhancement from Raymond Toy: · af31e6b2
      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.
      af31e6b2
  9. Jan 24, 1998
    • dtc's avatar
      Fix for elfun-derive-type-simple which was incorrectly deriving a · 6146fa3d
      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.
      6146fa3d
  10. Jan 05, 1998
    • dtc's avatar
      Enhancement of the arithmetic function derive type optimizers to · cea76a8f
      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.
      cea76a8f
  11. Jan 02, 1998
  12. Dec 20, 1997
  13. Dec 19, 1997
  14. Dec 18, 1997
    • dtc's avatar
      Enhancements from Raymond Toy: · 73717775
      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.
      73717775
    • dtc's avatar
      Enhance the sqrt derive-type optimize to return (0.0) rather than 0.0 · 5743edc2
      dtc authored
      if the argument is (0.0).
      5743edc2
  15. Dec 17, 1997
  16. Dec 16, 1997
  17. Dec 14, 1997
    • dtc's avatar
      e3f44e41
    • dtc's avatar
      Fix the log and sqrt derive type optimizers which I broken in the · a4cd0145
      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.
      a4cd0145
    • dtc's avatar
      Merge in the revised derive-type optimisers from Raymond Toy: · 1a0a7672
      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.
      1a0a7672
  18. Dec 12, 1997
    • dtc's avatar
      Special random transform for use with random-mt19937: · d947becd
      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.
      d947becd
  19. Dec 06, 1997
  20. Dec 05, 1997
  21. Dec 04, 1997
    • dtc's avatar
      Update from Raymond Toy: · e22d22a8
      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.
      e22d22a8
  22. Nov 27, 1997
    • dtc's avatar
      Patch from Raymond Toy: · 72efc87b
      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: + - *
      72efc87b
  23. Nov 16, 1997
  24. Oct 15, 1997
  25. Oct 09, 1997
  26. Oct 08, 1997
  27. Sep 20, 1997
    • dtc's avatar
      Updates from Raymond Toy: · 15ca185f
      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.
      15ca185f
  28. Sep 08, 1997
  29. Sep 05, 1997
    • dtc's avatar
      Updated log derive-type optimiser from Raymond Toy. · 27a0f74e
      dtc authored
      27a0f74e
    • dtc's avatar
      8f1da183
    • dtc's avatar
      Updates to the derive type optimisers from Raymond Toy: · 8eb07ea5
      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.
      8eb07ea5
  30. Aug 30, 1997
  31. Jun 11, 1997
  32. Jun 03, 1997
Loading