aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Webb <aquahobbyist@proton.me>2024-02-27 13:03:24 -0600
committerRob Landley <rob@landley.net>2024-03-24 17:31:53 -0500
commitc40010f7a672204e72a093e7e4d6c5267ad854ad (patch)
tree612d141cec044c610c03be854266dcf820cd94b3
parentd4fa148ece041123e4dee5f8a6978e2086cd3325 (diff)
downloadtoybox-c40010f7a672204e72a093e7e4d6c5267ad854ad.tar.gz
bc.c: Large block of numbers -> String for -l lib
-rw-r--r--toys/pending/bc.c240
1 files changed, 162 insertions, 78 deletions
diff --git a/toys/pending/bc.c b/toys/pending/bc.c
index c5af1405..caa7d559 100644
--- a/toys/pending/bc.c
+++ b/toys/pending/bc.c
@@ -788,85 +788,169 @@ BcProgramUnary bc_program_unarys[] = {
bc_program_negate, bc_program_not,
};
-char bc_program_stdin_name[] = "<stdin>";
char bc_program_ready_msg[] = "ready for more input\n";
char *bc_lib_name = "gen/lib.bc";
-char bc_lib[] = {
- 115,99,97,108,101,61,50,48,10,100,101,102,105,110,101,32,101,40,120,41,123,
- 10,97,117,116,111,32,98,44,115,44,110,44,114,44,100,44,105,44,112,44,102,44,
- 118,10,98,61,105,98,97,115,101,10,105,98,97,115,101,61,65,10,105,102,40,120,
- 60,48,41,123,10,110,61,49,10,120,61,45,120,10,125,10,115,61,115,99,97,108,101,
- 10,114,61,54,43,115,43,46,52,52,42,120,10,115,99,97,108,101,61,115,99,97,108,
- 101,40,120,41,43,49,10,119,104,105,108,101,40,120,62,49,41,123,10,100,43,61,
- 49,10,120,47,61,50,10,115,99,97,108,101,43,61,49,10,125,10,115,99,97,108,101,
- 61,114,10,114,61,120,43,49,10,112,61,120,10,102,61,118,61,49,10,102,111,114,
- 40,105,61,50,59,118,59,43,43,105,41,123,10,112,42,61,120,10,102,42,61,105,10,
- 118,61,112,47,102,10,114,43,61,118,10,125,10,119,104,105,108,101,40,100,45,
- 45,41,114,42,61,114,10,115,99,97,108,101,61,115,10,105,98,97,115,101,61,98,
- 10,105,102,40,110,41,114,101,116,117,114,110,40,49,47,114,41,10,114,101,116,
- 117,114,110,40,114,47,49,41,10,125,10,100,101,102,105,110,101,32,108,40,120,
- 41,123,10,97,117,116,111,32,98,44,115,44,114,44,112,44,97,44,113,44,105,44,
- 118,10,98,61,105,98,97,115,101,10,105,98,97,115,101,61,65,10,105,102,40,120,
- 60,61,48,41,123,10,114,61,40,49,45,49,48,94,115,99,97,108,101,41,47,49,10,105,
- 98,97,115,101,61,98,10,114,101,116,117,114,110,40,114,41,10,125,10,115,61,115,
- 99,97,108,101,10,115,99,97,108,101,43,61,54,10,112,61,50,10,119,104,105,108,
- 101,40,120,62,61,50,41,123,10,112,42,61,50,10,120,61,115,113,114,116,40,120,
- 41,10,125,10,119,104,105,108,101,40,120,60,61,46,53,41,123,10,112,42,61,50,
- 10,120,61,115,113,114,116,40,120,41,10,125,10,114,61,97,61,40,120,45,49,41,
- 47,40,120,43,49,41,10,113,61,97,42,97,10,118,61,49,10,102,111,114,40,105,61,
- 51,59,118,59,105,43,61,50,41,123,10,97,42,61,113,10,118,61,97,47,105,10,114,
- 43,61,118,10,125,10,114,42,61,112,10,115,99,97,108,101,61,115,10,105,98,97,
- 115,101,61,98,10,114,101,116,117,114,110,40,114,47,49,41,10,125,10,100,101,
- 102,105,110,101,32,115,40,120,41,123,10,97,117,116,111,32,98,44,115,44,114,
- 44,97,44,113,44,105,10,105,102,40,120,60,48,41,114,101,116,117,114,110,40,45,
- 115,40,45,120,41,41,10,98,61,105,98,97,115,101,10,105,98,97,115,101,61,65,10,
- 115,61,115,99,97,108,101,10,115,99,97,108,101,61,49,46,49,42,115,43,50,10,97,
- 61,97,40,49,41,10,115,99,97,108,101,61,48,10,113,61,40,120,47,97,43,50,41,47,
- 52,10,120,45,61,52,42,113,42,97,10,105,102,40,113,37,50,41,120,61,45,120,10,
- 115,99,97,108,101,61,115,43,50,10,114,61,97,61,120,10,113,61,45,120,42,120,
- 10,102,111,114,40,105,61,51,59,97,59,105,43,61,50,41,123,10,97,42,61,113,47,
- 40,105,42,40,105,45,49,41,41,10,114,43,61,97,10,125,10,115,99,97,108,101,61,
- 115,10,105,98,97,115,101,61,98,10,114,101,116,117,114,110,40,114,47,49,41,10,
- 125,10,100,101,102,105,110,101,32,99,40,120,41,123,10,97,117,116,111,32,98,
- 44,115,10,98,61,105,98,97,115,101,10,105,98,97,115,101,61,65,10,115,61,115,
- 99,97,108,101,10,115,99,97,108,101,42,61,49,46,50,10,120,61,115,40,50,42,97,
- 40,49,41,43,120,41,10,115,99,97,108,101,61,115,10,105,98,97,115,101,61,98,10,
- 114,101,116,117,114,110,40,120,47,49,41,10,125,10,100,101,102,105,110,101,32,
- 97,40,120,41,123,10,97,117,116,111,32,98,44,115,44,114,44,110,44,97,44,109,
- 44,116,44,102,44,105,44,117,10,98,61,105,98,97,115,101,10,105,98,97,115,101,
- 61,65,10,110,61,49,10,105,102,40,120,60,48,41,123,10,110,61,45,49,10,120,61,
- 45,120,10,125,10,105,102,40,115,99,97,108,101,60,54,53,41,123,10,105,102,40,
- 120,61,61,49,41,123,10,114,61,46,55,56,53,51,57,56,49,54,51,51,57,55,52,52,
- 56,51,48,57,54,49,53,54,54,48,56,52,53,56,49,57,56,55,53,55,50,49,48,52,57,
- 50,57,50,51,52,57,56,52,51,55,55,54,52,53,53,50,52,51,55,51,54,49,52,56,48,
- 47,110,10,105,98,97,115,101,61,98,10,114,101,116,117,114,110,40,114,41,10,125,
- 10,105,102,40,120,61,61,46,50,41,123,10,114,61,46,49,57,55,51,57,53,53,53,57,
- 56,52,57,56,56,48,55,53,56,51,55,48,48,52,57,55,54,53,49,57,52,55,57,48,50,
- 57,51,52,52,55,53,56,53,49,48,51,55,56,55,56,53,50,49,48,49,53,49,55,54,56,
- 56,57,52,48,50,47,110,10,105,98,97,115,101,61,98,10,114,101,116,117,114,110,
- 40,114,41,10,125,10,125,10,115,61,115,99,97,108,101,10,105,102,40,120,62,46,
- 50,41,123,10,115,99,97,108,101,43,61,53,10,97,61,97,40,46,50,41,10,125,10,115,
- 99,97,108,101,61,115,43,51,10,119,104,105,108,101,40,120,62,46,50,41,123,10,
- 109,43,61,49,10,120,61,40,120,45,46,50,41,47,40,49,43,46,50,42,120,41,10,125,
- 10,114,61,117,61,120,10,102,61,45,120,42,120,10,116,61,49,10,102,111,114,40,
- 105,61,51,59,116,59,105,43,61,50,41,123,10,117,42,61,102,10,116,61,117,47,105,
- 10,114,43,61,116,10,125,10,115,99,97,108,101,61,115,10,105,98,97,115,101,61,
- 98,10,114,101,116,117,114,110,40,40,109,42,97,43,114,41,47,110,41,10,125,10,
- 100,101,102,105,110,101,32,106,40,110,44,120,41,123,10,97,117,116,111,32,98,
- 44,115,44,111,44,97,44,105,44,118,44,102,10,98,61,105,98,97,115,101,10,105,
- 98,97,115,101,61,65,10,115,61,115,99,97,108,101,10,115,99,97,108,101,61,48,
- 10,110,47,61,49,10,105,102,40,110,60,48,41,123,10,110,61,45,110,10,111,61,110,
- 37,50,10,125,10,97,61,49,10,102,111,114,40,105,61,50,59,105,60,61,110,59,43,
- 43,105,41,97,42,61,105,10,115,99,97,108,101,61,49,46,53,42,115,10,97,61,40,
- 120,94,110,41,47,50,94,110,47,97,10,114,61,118,61,49,10,102,61,45,120,42,120,
- 47,52,10,115,99,97,108,101,43,61,108,101,110,103,116,104,40,97,41,45,115,99,
- 97,108,101,40,97,41,10,102,111,114,40,105,61,49,59,118,59,43,43,105,41,123,
- 10,118,61,118,42,102,47,105,47,40,110,43,105,41,10,114,43,61,118,10,125,10,
- 115,99,97,108,101,61,115,10,105,98,97,115,101,61,98,10,105,102,40,111,41,97,
- 61,45,97,10,114,101,116,117,114,110,40,97,42,114,47,49,41,10,125,10,0
-};
+char *bc_lib =
+"scale=20;\n"
+
+"define e(x){\n"
+" auto b,s,n,r,d,i,p,f,v;\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" if(x<0){\n"
+" n=1; x=-x;\n"
+" }\n"
+" s=scale;\n"
+" r=6+s+.44*x;\n"
+" scale=scale(x)+1;\n"
+" while(x>1){\n"
+" d+=1; x/=2;\n"
+" scale+=1;\n"
+" }\n"
+" scale=r;\n"
+" r=x+1; p=x; f=v=1;\n"
+" for(i=2;v;++i){;\n"
+" p*=x; f*=i; v=p/f; r+=v;\n"
+" }\n"
+" while(d--)r*=r;\n"
+" scale=s;\n"
+" ibase=b;\n"
+" if(n)return(1/r)\n"
+" return(r/1)\n"
+"}\n"
+
+"define l(x){\n"
+" auto b,s,r,p,a,q,i,v;\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" if(x<=0){;\n"
+" r=(1-10^scale)/1;\n"
+" ibase=b;\n"
+" return(r)\n"
+" }\n"
+" s=scale;\n"
+" scale+=6;\n"
+" p=2;\n"
+" while(x>=2){;\n"
+" p*=2;\n"
+" x=sqrt(x);\n"
+" }\n"
+" while(x<=.5){;\n"
+" p*=2;\n"
+" x=sqrt(x);\n"
+" }\n"
+" r=a=(x-1)/(x+1);\n"
+" q=a*a;\n"
+" v=1;\n"
+" for(i=3;v;i+=2){;\n"
+" a*=q; v=a/i; r+=v;\n"
+" }\n"
+" r*=p;\n"
+" scale=s;\n"
+" ibase=b;\n"
+" return(r/1)\n"
+"}\n"
+
+"define s(x){\n"
+" auto b,s,r,a,q,i;\n"
+" if(x<0)return(-s(-x))\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" s=scale;\n"
+" scale=1.1*s+2;\n"
+" a=a(1);\n"
+" scale=0;\n"
+" q=(x/a+2)/4;\n"
+" x-=4*q*a;\n"
+" if(q%2) x=-x;\n"
+" scale=s+2;\n"
+" r=a=x;\n"
+" q=-x*x;\n"
+" for(i=3;a;i+=2){;\n"
+" a*=q/(i*(i-1)); r+=a;\n"
+" }\n"
+" scale=s;\n"
+" ibase=b;\n"
+" return(r/1)\n"
+"}\n"
+
+"define c(x){\n"
+" auto b,s;\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" s=scale;\n"
+" scale*=1.2;\n"
+" x=s(2*a(1)+x);\n"
+" scale=s;\n"
+" ibase=b;\n"
+" return(x/1)\n"
+"}\n"
+
+"define a(x){\n"
+" auto b,s,r,n,a,m,t,f,i,u;\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" n=1;\n"
+" if(x<0){\n"
+" n=-1;\n"
+" x=-x;\n"
+" }\n"
+" if(scale<65){\n"
+" if(x==1){;\n"
+" r=.7853981633974483096156608458198757210492923498437764552437361480/n;\n"
+" ibase=b;\n"
+" return(r)\n"
+" }\n"
+" if(x==.2){;\n"
+" r=.1973955598498807583700497651947902934475851037878521015176889402/n;\n"
+" ibase=b;\n"
+" return(r)\n"
+" }\n"
+" }\n"
+" s=scale;\n"
+" if(x>.2){\n"
+" scale+=5; a=a(.2);\n"
+" }\n"
+" scale=s+3;\n"
+" while(x>.2){\n"
+" m+=1; x=(x-.2)/(1+.2*x);\n"
+" }\n"
+" r=u=x; f=-x*x; t=1;\n"
+" for(i=3;t;i+=2){;\n"
+" u*=f; t=u/i; r+=t;\n"
+" }\n"
+" scale=s;\n"
+" ibase=b;\n"
+" return((m*a+r)/n)\n"
+"}\n"
+
+"define j(n,x){\n"
+" auto b,s,o,a,i,v,f;\n"
+" b=ibase;\n"
+" ibase=A;\n"
+" s=scale;\n"
+" scale=0;\n"
+" n/=1;\n"
+" if(n<0){\n"
+" n=-n; o=n%2;\n"
+" }\n"
+" a=1;\n"
+" for(i=2;i<=n;++i)a*=i;\n"
+" scale=1.5*s;\n"
+" a=(x^n)/2^n/a;\n"
+" r=v=1;\n"
+" f=-x*x/4;\n"
+" scale+=length(a)-scale(a);\n"
+" for(i=1;v;++i){;\n"
+" v=v*f/i/(n+i); r+=v;\n"
+" }\n"
+" scale=s;\n"
+" ibase=b;\n"
+" if(o)a=-a;\n"
+" return(a*r/1)\n"
+"}\n";
static void bc_vec_grow(BcVec *v, unsigned long n) {
unsigned long old = v->cap;
@@ -1085,7 +1169,7 @@ BcStatus bc_read_line(BcVec *vec, char *prompt) {
s = bc_read_chars(vec, prompt);
if (s && s != BC_STATUS_EOF) return s;
if (bc_read_binary(vec->v, vec->len - 1))
- return bc_vm_verr(BC_ERROR_VM_BIN_FILE, bc_program_stdin_name);
+ return bc_vm_verr(BC_ERROR_VM_BIN_FILE, "<stdin>");
return BC_STATUS_SUCCESS;
}
@@ -4753,7 +4837,7 @@ static BcStatus bc_program_read(BcProgram *p) {
}
file = TT.file;
- bc_lex_file(&parse.l, bc_program_stdin_name);
+ bc_lex_file(&parse.l, "<stdin>");
bc_vec_npop(&f->code, f->code.len);
bc_vec_init(&buf, sizeof(char), NULL);
@@ -5741,7 +5825,7 @@ static BcStatus bc_vm_stdin(void) {
size_t string = 0;
int comment = 0, done = 0;
- bc_lex_file(&BC_VM->prs.l, bc_program_stdin_name);
+ bc_lex_file(&BC_VM->prs.l, "<stdin>");
bc_vec_init(&buffer, sizeof(uchar), NULL);
bc_vec_init(&buf, sizeof(uchar), NULL);