This looks like a bug to me.
fractalb.c, ComplexPower_bf:
_BFCMPLX *ComplexPower_bf(_BFCMPLX *t, _BFCMPLX *xx, _BFCMPLX *yy)
{
_BFCMPLX tmp;
bf_t e2x, siny, cosy;
int saved; saved = save_stack();
e2x = alloc_stack(rbflength+2);
siny = alloc_stack(rbflength+2);
cosy = alloc_stack(rbflength+2);
tmp.x = alloc_stack(rbflength+2);
tmp.y = alloc_stack(rbflength+2);
/* 0 raised to anything is 0 */
if (is_bf_zero(xx->x) && is_bf_zero(xx->y))
{
clear_bf(t->x);
clear_bf(t->y);
return(t);
}
cmplxlog_bf(t, xx);
cplxmul_bf(&tmp, t, yy);
exp_bf(e2x,tmp.x);
sincos_bf(siny,cosy,tmp.y);
mult_bf(t->x, e2x, cosy);
mult_bf(t->y, e2x, siny);
restore_stack(saved);
return(t);
}
When the 'if' is taken above, restore_stack() is not called and
bignum memory stack is leaked.
This structure is repeated again in ComplexPower_bn.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <
http://blogs.xmission.com/legalize/>