diff --git a/balloon/abstract_syntax_tree.cpp b/balloon/abstract_syntax_tree.cpp index 6b360be..adf3461 100644 --- a/balloon/abstract_syntax_tree.cpp +++ b/balloon/abstract_syntax_tree.cpp @@ -892,11 +892,6 @@ int abstract_syntax_tree::run_block() ++j; if(j!=i->children.end()) new_var=j->calculation(); - if(new_var.get_type()==__var_function) - { - exit_type=__bad_definition; - std::cout<<">>[Runtime-error] line "<1){return -1;} + var __balloon_lib_asin_asr=func(__x,__y) + { + var __mid=(__x+__y)/2; + if(abs(__y-__x)<=0.01){return (1/sqrt(1-__x*__x)+4/sqrt(1-__mid*__mid)+1/sqrt(1-__y*__y))*(__y-__x)/6;} + return __balloon_lib_asin_asr(__x,__mid)+__balloon_lib_asin_asr(__mid,__y); + }; + if(abs(_x)>1){return -1;} var fl=1; - if(__x<0){fl=-fl;__x=-__x;} - if(abs(__x-1)<0.001){return pi/2;} - return fl*__balloon_lib_asin_asr(0,__x); + if(_x<0){fl=-fl;_x=-_x;} + if(abs(_x-1)<0.001){return pi/2;} + return fl*__balloon_lib_asin_asr(0,_x); }; var acos=func(__x)