فهرست منبع

* Fixed sin(-0.0) to return -0.0 (was returning 0.0)
* Fixed lnxp1(-1.0) to return -Inf (was returning NaN)

git-svn-id: trunk@27639 -

sergei 11 سال پیش
والد
کامیت
f767d9017c
2فایلهای تغییر یافته به همراه8 افزوده شده و 1 حذف شده
  1. 3 0
      rtl/inc/genmath.inc
  2. 5 1
      rtl/objpas/math.pp

+ 3 - 0
rtl/inc/genmath.inc

@@ -1559,6 +1559,9 @@ type
          j : sizeint;
 
     begin
+      { This seemingly useless condition ensures that sin(-0.0)=-0.0 }
+      if (d=0.0) then
+        exit(d);
       j := rem_pio2(d,z) and 3;
 
       zz := z * z;

+ 5 - 1
rtl/objpas/math.pp

@@ -948,7 +948,11 @@ function lnxp1(x : float) : float;
         if (y=1.0) then
           lnxp1:=x
         else
-          lnxp1:=ln(y)+(x-(y-1.0))/y;
+          begin
+            lnxp1:=ln(y);     { lnxp1(-1) = ln(0) = -Inf }
+            if y>0.0 then
+              lnxp1:=lnxp1+(x-(y-1.0))/y;
+          end;
       end;
   end;