diff options
Diffstat (limited to 'gen/lib2.bc')
-rw-r--r-- | gen/lib2.bc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/gen/lib2.bc b/gen/lib2.bc index 2811430d534e..ba3f76b1803a 100644 --- a/gen/lib2.bc +++ b/gen/lib2.bc @@ -93,6 +93,18 @@ define comb(n,r){ scale=s return f } +define fib(n){ + auto i,t,p,r + if(!n)return 0 + n=abs(n)$ + t=1 + for (i=1;i<n;++i){ + r=p + p=t + t+=r + } + return t +} define log(x,b){ auto p,s s=scale @@ -106,7 +118,7 @@ define log(x,b){ define l2(x){return log(x,2)} define l10(x){return log(x,A)} define root(x,n){ - auto s,m,r,q,p + auto s,t,m,r,q,p if(n<0)sqrt(n) n=n$ if(n==0)x/n @@ -114,13 +126,17 @@ define root(x,n){ if(n==2)return sqrt(x) s=scale scale=0 - if(x<0&&n%2==0)sqrt(x) - scale=s+2 + if(x<0&&n%2==0){ + scale=s + sqrt(x) + } + scale=s+scale(x)+5 + t=s+5 m=(x<0) x=abs(x) p=n-1 q=A^ceil((length(x$)/n)$,0) - while(r!=q){ + while(r@t!=q@t){ r=q q=(p*r+x/r^p)/n } |