aboutsummaryrefslogtreecommitdiff
path: root/gen/lib2.bc
diff options
context:
space:
mode:
Diffstat (limited to 'gen/lib2.bc')
-rw-r--r--gen/lib2.bc28
1 files changed, 26 insertions, 2 deletions
diff --git a/gen/lib2.bc b/gen/lib2.bc
index ba3f76b1..1d7d48c6 100644
--- a/gen/lib2.bc
+++ b/gen/lib2.bc
@@ -34,10 +34,34 @@
*/
define p(x,y){
- auto a
+ auto a,i,s,z
+ if(y==0)return 1@scale
+ if(x==0){
+ if(y>0)return 0
+ return 1/0
+ }
a=y$
if(y==a)return(x^a)@scale
- return e(y*l(x))
+ z=0
+ if(x<1){
+ y=-y
+ a=-a
+ z=x
+ x=1/x
+ }
+ if(y<0){
+ return e(y*l(x))
+ }
+ i=x^a
+ s=scale
+ scale+=length(i)+5
+ if(z){
+ x=1/z
+ i=x^a
+ }
+ i*=e((y-a)*l(x))
+ scale=s
+ return i@scale
}
define r(x,p){
auto t,n