1. 21 Jun, 2007 1 commit
  2. 20 Jun, 2007 1 commit
  3. 11 Jun, 2007 1 commit
    • rtoy's avatar
      compiler/float-tran.lisp: · 599a4a72
      rtoy authored
      o Handle signed-zeroes for addition, subtraction, and multiplication
        of double-double floats.  That is, return the correct signed zero
        for the result.
      o Try to handle overflow in addition, multiplication, and division by
        returning infinity, if the overflow or divide-by-zero trap is
        disabled.  This is done by looking to see what the corresponding
        double-float operation would return.  This probably needs more work.
      
      code/irrat-dd.lisp:
      o Remove the careful-mul stuff from dd-complex-atanh since we handle
        signed zeroes better now during double-double multiplication.
      599a4a72
  4. 09 May, 2007 1 commit
    • rtoy's avatar
      compiler/ppc/float.lisp: · 6574f257
      rtoy authored
      o Add vops to do fused multiply-add and fused multiply-subtract.
        (Only double-float supported.)
      o Add defknown's for these translations.
      
      compiler/float-tran.lisp:
      o Used fused multiply-subtract for two-prod and two-sqr instead of the
        split function.
      6574f257
  5. 03 Feb, 2007 1 commit
    • rtoy's avatar
      Fix bug in expt type derivation. · 99d4c4c8
      rtoy authored
      (defun f (x y)
         (declare (fixnum x y))
         (expt x y))
      
      caused an error because we weren't handling member types correctly.
      99d4c4c8
  6. 23 Jan, 2007 1 commit
    • rtoy's avatar
      Fix expt derive-type optimizer. The compiler was deriving the result · 4ece2b2c
      rtoy authored
      type of:
      
          (defun foo3 (x y)
            (declare (type (double-float (0d0) 1d0) x)
      	       (type (double-float (0d0)) y))
            (expt x y))
      
      to be (double-float 0d0 1d0), i.e, including -0.0, but that's not
      possible.  With this fix, the result type is (or (member 0d0)
      (double-float (0d0) 1d0)), which is better.
      4ece2b2c
  7. 21 Aug, 2006 1 commit
    • rtoy's avatar
      Some very basic support for signed zeroes for DOUBLE-DOUBLE-FLOAT. We · e14ba2a5
      rtoy authored
      can now read and print -0w0.
      
      code/float.lisp:
      o Adjust float-sign so that we get the correct sign when
        double-double-floats are used.
      o Adjust FLOAT-RATIO to call %MAKE-DOUBLE-DOUBLE-FLOAT so that we
        preserve the sign of the number.  This is safe because the
        components are known to be properly scaled.
      
      compiler/float-tran.lisp:
      o Use %MAKE-DOUBLE-DOUBLE-FLOAT in %DOUBLE-DOUBLE-FLOAT to preserve
        the sign of the original float.  This is safe because the
        components are known to be properly scaled.
      o Add a FLOAT-SIGN deftransform to handle DOUBLE-DOUBLE-FLOAT.
      e14ba2a5
  8. 07 Jul, 2006 2 commits
    • rtoy's avatar
      compiler/float-tran.lisp: · bbb89ea5
      rtoy authored
      o Change the following functions to be maybe-inline instead of inline
        so we don't inline them by default unless the user says so by
        specifying (SPACE 0): ADD-DD, MUL-DD-D, MUL-DD, ADD-DD-D, SQR-DD,
        DIV-DD, DIV-DD-D, SQRT-DD
      
      code/irrat-dd.lisp:
      o Set (SPACE 0) for these functions so we inline the operations.
        (Should we really inline all of these?)
      bbb89ea5
    • rtoy's avatar
      Oops. We can only apply the sqrt deftransform for · 0b4eefba
      rtoy authored
      double-double-floats if the arg is non-negative.
      0b4eefba
  9. 30 Jun, 2006 1 commit
  10. 26 Jun, 2005 1 commit
  11. 19 Jun, 2005 1 commit
  12. 29 Apr, 2005 1 commit
  13. 24 Apr, 2005 1 commit
  14. 23 Sep, 2004 1 commit
  15. 03 Sep, 2004 1 commit
  16. 18 Jun, 2004 1 commit
    • rtoy's avatar
      o Fix a misplaced declaration in %unary-ftruncate/single-float · a71e3e77
      rtoy authored
      o Update %unary-ftruncate and the corresponding deftransform because
        it was not properly returning the correct sign for signed zeroes.
        If the number was in a good range, we used truncate, which loses the
        sign of zero.  (Should we have leave it in and add an explicit check
        for a zero result and adjust the sign appropriately?  That would
        allow us to use the fast builtin instructions at the expense of a
        test for zero and a fix.)
      a71e3e77
  17. 10 Jan, 2004 1 commit
  18. 09 Jan, 2004 1 commit
  19. 12 Sep, 2003 1 commit
  20. 07 Sep, 2003 1 commit
    • gerd's avatar
      (defun foo (x) (float x 1f0)) · 18894485
      gerd authored
      	(compile 'foo)
      	(foo 0d0)
      	 => 0d0
      
      	Found by Paul Dietz with sqrt on complex numbers.
      
      	* src/compiler/float-tran.lisp (float) <deftransform>:
      	Test with single-float-p instead of floatp.
      18894485
  21. 05 Sep, 2003 2 commits
    • toy's avatar
      compiler/float-tran.lisp: · c640d0f2
      toy authored
      o Oops.  We should subtract from 0, not 0d0
      o Add the deftransform for - to the complex-fp-vops part too, because
        the vop gets that wrong.
      
      compiler/sparc/float.lisp:
      o Remove the vop for a real - complex because we get the sign of the
        imaginary part wrong.
      c640d0f2
    • toy's avatar
      The deftransform for - with a float and complex arg was negating the · dd95c758
      toy authored
      imaginary part instead of subtracting from 0.  This is needed to get
      the correct sign if the imaginary part was 0.
      
      (From a bug in Paul Dietz's ansi tests.)
      dd95c758
  22. 02 Sep, 2003 1 commit
  23. 03 Jul, 2003 1 commit
  24. 02 Jul, 2003 1 commit
  25. 23 Apr, 2003 1 commit
  26. 14 Mar, 2002 1 commit
  27. 08 Mar, 2002 1 commit
    • toy's avatar
      Micro optimization for Sparc. The ftruncate code using · 95f890d7
      toy authored
      %unary-truncate has many redundant stack moves even when it's know the
      result will fit in a (signed-byte 32), so create vops to do the
      conversion directly in the floating-point registers.
      
      Also, sparc-v9 can do 64-bit integer conversions, so make the range up
      to 64-bits for sparc-v9.
      95f890d7
  28. 25 Feb, 2002 1 commit
  29. 24 Sep, 2001 1 commit
  30. 12 Apr, 2001 1 commit
    • pw's avatar
      From Ray Toy: · 9fbccc50
      pw authored
      Here is the patch that makes the propagate-float-type,
      propagate-fun-type, and constrain-float-type features the default.
      All old code is removed.
      
      If you recompile, you should probably remove these features, just to
      be sure (caught a few mistakes that way).
      9fbccc50
  31. 06 Jul, 2000 1 commit
  32. 02 Apr, 2000 1 commit
    • dtc's avatar
      From Raymond Toy: · dfee6bab
      dtc authored
      o Add support for complex FP vops, enabled by the feature :complex-fp-vop
        which should work for all Sparcs.
      dfee6bab
  33. 06 Sep, 1999 1 commit
  34. 13 Jul, 1999 1 commit
    • pw's avatar
      From Ray Toy: · 06f81774
      pw authored
      Changes:
      
      o Change deftransform truncate to handle the two arg case.  Add
        similar deftranform for floor and ceiling.
      
      o Only inline complex single/double-float division if speed > space.
        Otherwise, call the division routines.
      06f81774
  35. 23 Jan, 1999 1 commit
  36. 01 Oct, 1998 1 commit
  37. 29 Sep, 1998 1 commit
    • dtc's avatar
      Change the domain argument of elfun-derive-type-simple from a · af5e6fb5
      dtc authored
      numeric-type to a high and low bound for which negative and positive
      zero being distinct as for the :negative-zero-not-zero feature.  This
      fixes some problems that occurred when not compiled with the
      :negative-zero-not-zero feature.
      af5e6fb5
  38. 20 Sep, 1998 1 commit