      _cimg_math_parser(const _cimg_math_parser& mp):
        mem(mp.mem),code(mp.code),code_begin_t(mp.code_begin_t),code_end_t(mp.code_end_t),
        p_code_end(mp.p_code_end),p_break(mp.p_break),
        imgin(mp.imgin),imgout(mp.imgout),imglist(mp.imglist),
        img_stats(mp.img_stats),list_stats(mp.list_stats),list_median(mp.list_median),list_norm(mp.list_norm),
        debug_indent(0),result_dim(mp.result_dim),break_type(0),constcache_size(0),
        is_parallelizable(mp.is_parallelizable),is_fill(mp.is_fill),
        need_input_copy(mp.need_input_copy),result(mem._data + (mp.result - mp.mem._data)),
        rng((cimg::_rand(),cimg::rng())),calling_function(0) {

#if cimg_use_openmp!=0
        mem[_cimg_mp_slot_t] = (double)omp_get_thread_num();
        rng+=omp_get_thread_num();
#endif
        opcode.assign();
        opcode._is_shared = true;
      }
      _cimg_math_parser(const _cimg_math_parser& mp):
        mem(mp.mem),code(mp.code),code_begin_t(mp.code_begin_t),code_end_t(mp.code_end_t),
        p_code_end(mp.p_code_end),p_break(mp.p_break),
        imgin(mp.imgin),imgout(mp.imgout),imglist(mp.imglist),
        img_stats(mp.img_stats),list_stats(mp.list_stats),list_median(mp.list_median),list_norm(mp.list_norm),
        debug_indent(0),result_dim(mp.result_dim),break_type(0),constcache_size(0),
        is_parallelizable(mp.is_parallelizable),is_fill(mp.is_fill),
        need_input_copy(mp.need_input_copy),result(mem._data + (mp.result - mp.mem._data)),
        rng((cimg::_rand(),cimg::rng())),calling_function(0) {

#if cimg_use_openmp!=0
        mem[_cimg_mp_slot_t] = (double)omp_get_thread_num();
        rng+=omp_get_thread_num();
#endif
        opcode.assign();
        opcode._is_shared = true;
      }