void chain_init(CHAIN* chain, int nchain) { int i,t, noise=327; assert(chain!=NULL); assert(nchain<=CHAIN_MAX); chain->nchain = nchain; t = (int)time(NULL); #ifdef _DEBUG t = 0; noise = 0; #endif for( i = 0 ; i < nchain ; i++, t+=noise) { CHAINCORE* core = &chain->core[i]; core->threadid = 0; core->nciter = 0; core->compiler = compiler_create(); core->monitor_buff = NULL; NMath_Init(&core->ms); RNG_Init(&core->ms, t); } chain->niter = 0; chain->minterval = 100; }
rt_value rt_eval(rt_value self, const char *input, const char *filename) { struct compiler *compiler = compiler_create(input, filename); struct node* expression = parse_main(compiler); if(compiler->err_count != 0) return RT_NIL; extern rt_value get_node_name(struct node *node); #ifdef DEBUG printf("Tree: %s\n", rt_string_to_cstr(get_node_name(expression))); #endif struct block *code_block = gen_block(expression); rt_compiled_block_t compiled_block = compile_block(code_block); compiler_destroy(compiler); return compiled_block(self, RT_NIL, 0, 0); }