Make step(0)=1/2 again and remove step_power.
authorChris Dams <Chris.Dams@mi.infn.it>
Mon, 13 Mar 2006 17:21:47 +0000 (17:21 +0000)
committerChris Dams <Chris.Dams@mi.infn.it>
Mon, 13 Mar 2006 17:21:47 +0000 (17:21 +0000)
doc/tutorial/ginac.texi
ginac/inifcns.cpp
ginac/numeric.cpp
ginac/numeric.h

index 5c3cdef9e920f1d98b985f14097a1f9116626556..23956d77268ab12d447848d62809f5df8cc6940d 100644 (file)
@@ -1394,7 +1394,7 @@ evaluated immediately:
 @item @code{csgn(z)}
 @tab complex sign (returns an @code{int})
 @item @code{step(x)}
-@tab step function (returns an @code{int})
+@tab step function (returns an @code{numeric})
 @item @code{numer(z)}
 @tab numerator of rational or complex rational number
 @item @code{denom(z)}
index 830b1bff41ff556816e6c398add542179ad6f7e2..47252a8f0d85724a4ccccd02d11382ccbadfd265 100644 (file)
@@ -180,14 +180,6 @@ static ex step_series(const ex & arg,
        return pseries(rel,seq);
 }
 
-static ex step_power(const ex & arg, const ex & exp)
-{
-       if (exp.info(info_flags::positive))
-               return step(arg);
-       
-       return power(step(arg), exp).hold();
-}
-
 static ex step_conjugate(const ex& arg)
 {
        return step(arg);
@@ -196,8 +188,7 @@ static ex step_conjugate(const ex& arg)
 REGISTER_FUNCTION(step, eval_func(step_eval).
                         evalf_func(step_evalf).
                         series_func(step_series).
-                        conjugate_func(step_conjugate).
-                        power_func(step_power));
+                        conjugate_func(step_conjugate));
 
 //////////
 // Complex sign
index 18943d3fdfb1f37f5b32506b4a96a27f82328a0a..b8170e716ff3220685cb490d1a9ccf6473c23947 100644 (file)
@@ -931,10 +931,10 @@ const numeric numeric::inverse() const
  *  ignored because the step function is generally considered real but
  *  a numeric may develop a small imaginary part due to rounding errors.
  */
-int numeric::step() const
+numeric numeric::step() const
 {      cln::cl_R r = cln::realpart(value);
        if(cln::zerop(r))
-               return 1;
+               return numeric(1,2);
        if(cln::plusp(r))
                return 1;
        return 0;
index 2cf93480cf9eb16fb812cc4403882f526c20f33b..f0e3362f8965aec7bcd5aaf199e6d65f1f3362d7 100644 (file)
@@ -148,7 +148,7 @@ public:
        const numeric & operator=(double d);
        const numeric & operator=(const char *s);
        const numeric inverse() const;
-       int step() const;
+       numeric step() const;
        int csgn() const;
        int compare(const numeric &other) const;
        bool is_equal(const numeric &other) const;
@@ -251,7 +251,7 @@ inline const numeric pow(const numeric &x, const numeric &y)
 inline const numeric inverse(const numeric &x)
 { return x.inverse(); }
 
-inline int step(const numeric &x)
+inline numeric step(const numeric &x)
 { return x.step(); }
 
 inline int csgn(const numeric &x)