update:can use recursion in block def
This commit is contained in:
parent
a2a6ca2f58
commit
94a1359aa2
|
@ -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 "<<line<<": cannot declare a function in any blocks."<<std::endl;
|
||||
}
|
||||
new_var.set_name(_name);
|
||||
scope.add_new_var(new_var);
|
||||
}
|
||||
|
|
|
@ -175,7 +175,6 @@ enum runtime_error_type
|
|||
__find_var_failure,
|
||||
__error_value_type,
|
||||
__error_command_use,
|
||||
__bad_definition,
|
||||
__sigfpe_arithmetic_exception,
|
||||
__sigsegv_segmentation_error,
|
||||
__terminal_interrupt,
|
||||
|
@ -193,7 +192,6 @@ void print_exit_type(int type)
|
|||
case __find_var_failure: context="find_var_failure";break;
|
||||
case __error_value_type: context="value_type_error";break;
|
||||
case __error_command_use: context="command_use_error(continue/break/return)";break;
|
||||
case __bad_definition: context="bad_definition(func in block)";break;
|
||||
case __sigfpe_arithmetic_exception: context="SIGFPE_arithmetic_exception";break;
|
||||
case __sigsegv_segmentation_error: context="SIGSEGV_segmentation_error";break;
|
||||
case __terminal_interrupt: context="interrupt";break;
|
||||
|
|
|
@ -8,15 +8,14 @@ var abs=func(__x)
|
|||
else{return -__x;}
|
||||
};
|
||||
|
||||
var __balloon_lib_ln_asr=func(__x,__y)
|
||||
{
|
||||
if(abs(__y-__x)<=0.1){return (1/__x+8/(__x+__y)+1/__y)*(__y-__x)/6;}
|
||||
var __mid=(__x+__y)/2;
|
||||
return __balloon_lib_ln_asr(__x,__mid)+__balloon_lib_ln_asr(__mid,__y);
|
||||
};
|
||||
|
||||
var ln=func(_x)
|
||||
{
|
||||
var __balloon_lib_ln_asr=func(__x,__y)
|
||||
{
|
||||
if(abs(__y-__x)<=0.1){return (1/__x+8/(__x+__y)+1/__y)*(__y-__x)/6;}
|
||||
var __mid=(__x+__y)/2;
|
||||
return __balloon_lib_ln_asr(__x,__mid)+__balloon_lib_ln_asr(__mid,__y);
|
||||
};
|
||||
return __balloon_lib_ln_asr(1,_x);
|
||||
};
|
||||
|
||||
|
@ -113,20 +112,19 @@ var sqrt=func(__x)
|
|||
return t;
|
||||
};
|
||||
|
||||
var __balloon_lib_asin_asr=func(__x,__y)
|
||||
var asin=func(_x)
|
||||
{
|
||||
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);
|
||||
};
|
||||
|
||||
var asin=func(__x)
|
||||
{
|
||||
if(abs(__x)>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)
|
||||
|
|
Loading…
Reference in New Issue