Fix bug where the nth derivative of 0^n evaluated to 0 instead of n!
(complement to commit cd0bc28e
)
time-shift
parent
dc5a952bd9
commit
f36f76760a
|
@ -1253,7 +1253,7 @@ public:
|
|||
int derivOrder = nearbyint(Stackf.top());
|
||||
Stackf.pop();
|
||||
if (fabs(v1f) < NEAR_ZERO && v2f > 0
|
||||
&& derivOrder >= v2f
|
||||
&& derivOrder > v2f
|
||||
&& fabs(v2f-nearbyint(v2f)) < NEAR_ZERO)
|
||||
{
|
||||
r = 0.0;
|
||||
|
|
|
@ -890,7 +890,7 @@ Interpreter::compute_block_time(int Per_u_, bool evaluate, int block_num, int si
|
|||
try
|
||||
{
|
||||
if (fabs(v1) < NEAR_ZERO && v2 > 0
|
||||
&& derivOrder >= v2
|
||||
&& derivOrder > v2
|
||||
&& fabs(v2-nearbyint(v2)) < NEAR_ZERO)
|
||||
Stack.push(0.0);
|
||||
else
|
||||
|
|
|
@ -685,7 +685,7 @@ DataTree::writePowerDeriv(ostream &output, bool use_dll) const
|
|||
<< "#ifdef _MSC_VER" << endl
|
||||
<< "# define nearbyint(x) (fabs((x)-floor(x)) < fabs((x)-ceil(x)) ? floor(x) : ceil(x))" << endl
|
||||
<< "#endif" << endl
|
||||
<< " if ( fabs(x) < " << NEAR_ZERO << " && p > 0 && k >= p && fabs(p-nearbyint(p)) < " << NEAR_ZERO << " )" << endl
|
||||
<< " if ( fabs(x) < " << NEAR_ZERO << " && p > 0 && k > p && fabs(p-nearbyint(p)) < " << NEAR_ZERO << " )" << endl
|
||||
<< " return 0.0;" << endl
|
||||
<< " else" << endl
|
||||
<< " {" << endl
|
||||
|
|
|
@ -2598,7 +2598,7 @@ BinaryOpNode::eval_opcode(double v1, BinaryOpcode op_code, double v2, int derivO
|
|||
return (pow(v1, v2));
|
||||
case oPowerDeriv:
|
||||
if (fabs(v1) < NEAR_ZERO && v2 > 0
|
||||
&& derivOrder >= v2
|
||||
&& derivOrder > v2
|
||||
&& fabs(v2-nearbyint(v2)) < NEAR_ZERO)
|
||||
return 0.0;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue