Symbol* tsym1 = NewTemporaryVar (stmt->symbol()->type, "");
Symbol* tsym2 = NewTemporaryVar (stmt->symbol()->type, "");
string* x1=new string("0");
Expression* e01=parser->make_float_const(parser->global_float, x1);
Expression* e02=DuplicateExpr(ex3);
Expression* e03=parser->intrinsic_op_node(".lt.", LT_OP, e02, e01);
Statement* s1=parser->make_stmt(IF_NODE, 0, e03, 0, 0);
Statement* s1a=NULL;
Statement* s1b=NULL;
Statement* s2a=NULL;
Statement* s2b=NULL;
{
Expression* ee1;
if (ex2const)
{
double var;
var=param;
if (ex2val>var) var=ex2val; //min
sprintf(buf, "%g", var);
string* x2=new string(buf);
ee1=parser->make_float_const(parser->global_float, x2);
}
else
{
sprintf(buf, "%g", param);
string* x2=new string(buf);
Expression* ex01=parser->make_float_const(parser->global_float, x2);
Expression* ex02=DuplicateExpr(ex2);
Expression* ex03=parser->set_ll_list (ex02, 0, EXPR_LIST);
Expression* ex04=parser->set_ll_list (ex03, ex01, EXPR_LIST);
Symbol* sm01=(parser->global_scope()->look_up_ftn_sym("max"))->symbol();
Expression* ex05=parser->make_expr (FUNC_CALL, ex04, 0, sm01);
ee1=ex05;
}
Expression* e01=parser->make_expr(VAR_REF, 0, 0, tsym1);
s1a=parser->make_stmt(ASSIGN_STAT, 0, e01, ee1, 0);
}
{
Expression* ee1;
sprintf(buf, "%g", param);
string* x1=new string(buf);
Expression* ex01=parser->make_float_const(parser->global_float, x1);
Expression* ex02=DuplicateExpr(ex1);
Expression* ex03=parser->intrinsic_op_node("-", SUBT_OP, ex01, ex02);
Expression* ex03x1=DuplicateExpr(ex3);
Expression* ex03x2=parser->intrinsic_op_node("/", DIV_OP, ex03, ex03x1);
string* x3=new string("1");
Expression* ex03x3=parser->make_float_const(parser->global_float, x3);
Expression* ex03x4=parser->intrinsic_op_node("+", ADD_OP, ex03x2, ex03x3);
Expression* ex03a=parser->set_ll_list (ex03x4, 0, EXPR_LIST);
Symbol* sm01=(parser->global_scope()->look_up_ftn_sym("int"))->symbol();
Expression* ex04=parser->make_expr (FUNC_CALL, ex03a, 0, sm01);
Expression* ex03x5=DuplicateExpr(ex3);
Expression* ex03x6=parser->intrinsic_op_node("*", MULT_OP, ex04, ex03x5);
Expression* ex03x7=DuplicateExpr(ex1);
Expression* ex03x8=parser->intrinsic_op_node("+", ADD_OP, ex03x6, ex03x7);
Expression* ex03x9=parser->set_ll_list (ex03x8, 0, EXPR_LIST);
Expression* ex08=DuplicateExpr(ex1);
Expression* ex09=parser->set_ll_list (ex08, ex03x9, EXPR_LIST);
Symbol* sm02=(parser->global_scope()->look_up_ftn_sym("min"))->symbol();
Expression* ex10=parser->make_expr (FUNC_CALL, ex09, 0, sm02);
ee1=ex10;
Expression* e01=parser->make_expr (VAR_REF, 0, 0, tsym2);
s1b=parser->make_stmt(ASSIGN_STAT, 0, e01, ee1, 0);
}
Statement* s1c=parser->make_stmt(CONTROL_END, 0, 0, 0, 0);
{
Expression* ee2;
if (ex2const)
{
double var;
var=param;
if (ex2valmake_float_const(parser->global_float, x2);
}
else
{
sprintf(buf, "%g", param);
string* x2=new string(buf);
Expression* ex01=parser->make_float_const(parser->global_float, x2);
Expression* ex02=DuplicateExpr(ex2);
Expression* ex03=parser->set_ll_list (ex02, 0, EXPR_LIST);
Expression* ex04=parser->set_ll_list (ex03, ex01, EXPR_LIST);
Symbol* sm01=(parser->global_scope()->look_up_ftn_sym("min"))->symbol();
Expression* ex05=parser->make_expr (FUNC_CALL, ex04, 0, sm01);
ee2=ex05;
}
Expression* e02=parser->make_expr (VAR_REF, 0, 0, tsym1);
s2a=parser->make_stmt(ASSIGN_STAT, 0, e02, ee2, 0);
}
{
Expression* ee2;
sprintf(buf, "%g", param);
string* x1=new string(buf);
Expression* ex01=parser->make_float_const(parser->global_float, x1);
Expression* ex02=DuplicateExpr(ex1);
Expression* ex03=parser->intrinsic_op_node("-", SUBT_OP, ex01, ex02);
Expression* ex03x1=DuplicateExpr(ex3);
Expression* ex03x2=parser->intrinsic_op_node("/", DIV_OP, ex03, ex03x1);
string* x3=new string("1");
Expression* ex03x3=parser->make_float_const(parser->global_float, x3);
Expression* ex03x4=parser->intrinsic_op_node("+", ADD_OP, ex03x2, ex03x3);
Expression* ex03a=parser->set_ll_list (ex03x4, 0, EXPR_LIST);
Symbol* sm01=(parser->global_scope()->look_up_ftn_sym("int"))->symbol();
Expression* ex04=parser->make_expr (FUNC_CALL, ex03a, 0, sm01);
Expression* ex03x5=DuplicateExpr(ex3);
Expression* ex03x6=parser->intrinsic_op_node("*", MULT_OP, ex04, ex03x5);
Expression* ex03x7=DuplicateExpr(ex1);
Expression* ex03x8=parser->intrinsic_op_node("+", ADD_OP, ex03x6, ex03x7);
Expression* ex03x9=parser->set_ll_list (ex03x8, 0, EXPR_LIST);
Expression* ex08=DuplicateExpr(ex1);
Expression* ex09=parser->set_ll_list (ex08, ex03x9, EXPR_LIST);
Symbol* sm02=(parser->global_scope()->look_up_ftn_sym("max"))->symbol();
Expression* ex10=parser->make_expr (FUNC_CALL, ex09, 0, sm02);
ee2=ex10;
Expression* e02=parser->make_expr (VAR_REF, 0, 0, tsym2);
s2b=parser->make_stmt(ASSIGN_STAT, 0, e02, ee2, 0);
}
Statement* s2c=parser->make_stmt(CONTROL_END, 0, 0, 0, 0);
StmtList* sl1=new StmtList();
StmtListIterator next_newstmt1(sl1);
next_newstmt1.insert (s1a, s1) ;
next_newstmt1.insert (s1b, s1) ;
next_newstmt1.insert (s1c, s1) ;
s1->node.fields.bl_ptr1=sl1;
StmtList* sl2=new StmtList();
StmtListIterator next_newstmt2(sl2);
next_newstmt2.insert (s2a, s1) ;
next_newstmt2.insert (s2b, s1) ;
next_newstmt2.insert (s2c, s1) ;
s1->node.fields.bl_ptr2=sl2;
next_stmt.insert (s1, currentCP) ;
nexpr2=parser->make_expr (VAR_REF, 0, 0, tsym1);
nexpr1=parser->make_expr (VAR_REF, 0, 0, tsym2);