#include #include #include #include tfun int Fib; tfun int Main; static tval Expr _c_0; static tval Expr _c_1; static tval Expr _c_2; static tval Expr _c_3; tfun int Fib( tval Expr _v_arg1,tout Expr _v_res1){ { { if ((((Expr&)_v_arg1).get_len () != 1)) { goto _block1__branch1; } if (!((Expr&)_c_0).term_eq (_v_arg1, 0)) { goto _block1__branch1; } _v_res1 = _c_0; goto _block1; } _block1__branch1: {} { if ((((Expr&)_v_arg1).get_len () != 1)) { goto _block1__branch2; } if (!((Expr&)_c_1).term_eq (_v_arg1, 0)) { goto _block1__branch2; } _v_res1 = _c_1; goto _block1; } _block1__branch2: {} if ((((Expr&)_v_arg1).get_len () != 1)) { RF_FUNC_ERROR (unexpected_fail); } if (!((Expr&)_v_arg1).symbol_at (0)) { RF_FUNC_ERROR (unexpected_fail); } tval Expr _vs_1 (_v_arg1, 0, 1); tval Expr _v__m_1; Arithm::_m_( (_vs_1, _c_0), _v__m_1); tval Expr _v_Fib1; fib::Fib( _v__m_1, _v_Fib1); tval Expr _v__m_2; Arithm::_m_( (_vs_1, _c_2), _v__m_2); tval Expr _v_Fib2; fib::Fib( _v__m_2, _v_Fib2); Arithm::_p_( (_v_Fib1, _v_Fib2), _v_res1); } _block1: {} } tfun int Main( tout Expr _v_res1){ tval Expr _v_Fib1; fib::Fib( _c_3, _v_Fib1); StdIO::PrintLN( _v_Fib1, ); _v_res1 = empty; } static void init_ () { _c_0 = Expr::create("1"); _c_1 = Expr::create("0"); _c_2 = Expr::create("2"); _c_3 = Expr::create("28"); }