aboutsummaryrefslogtreecommitdiff
path: root/Source/Parser/wp_parser_y.c
diff options
context:
space:
mode:
authorGravatar Weiqun Zhang <weiqunzhang@lbl.gov> 2019-03-16 11:22:19 -0700
committerGravatar Weiqun Zhang <weiqunzhang@lbl.gov> 2019-03-16 11:22:19 -0700
commit4844eb55a7c1dca03f15d07ff22a34e3ab3d134c (patch)
tree8c505360af925348f3a6bce31f9efcb1ed1eea5f /Source/Parser/wp_parser_y.c
parent52f718d62605d964fb7a099e50d3f0a45167e654 (diff)
downloadWarpX-4844eb55a7c1dca03f15d07ff22a34e3ab3d134c.tar.gz
WarpX-4844eb55a7c1dca03f15d07ff22a34e3ab3d134c.tar.zst
WarpX-4844eb55a7c1dca03f15d07ff22a34e3ab3d134c.zip
add unary plus sign and fix a bug
Diffstat (limited to 'Source/Parser/wp_parser_y.c')
-rw-r--r--Source/Parser/wp_parser_y.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Source/Parser/wp_parser_y.c b/Source/Parser/wp_parser_y.c
index c4815a2a9..21b6cc96e 100644
--- a/Source/Parser/wp_parser_y.c
+++ b/Source/Parser/wp_parser_y.c
@@ -443,7 +443,8 @@ wp_ast_optimize (struct wp_node* node)
if (node->l->type == WP_NUMBER &&
node->r->type == WP_NUMBER)
{
- double v = wp_ast_eval(node);
+ double v = ((struct wp_number*)(node->l))->value
+ + ((struct wp_number*)(node->r))->value;
((struct wp_number*)node)->type = WP_NUMBER;
((struct wp_number*)node)->value = v;
}
@@ -505,7 +506,8 @@ wp_ast_optimize (struct wp_node* node)
if (node->l->type == WP_NUMBER &&
node->r->type == WP_NUMBER)
{
- double v = wp_ast_eval(node);
+ double v = ((struct wp_number*)(node->l))->value
+ - ((struct wp_number*)(node->r))->value;
((struct wp_number*)node)->type = WP_NUMBER;
((struct wp_number*)node)->value = v;
}
@@ -567,7 +569,8 @@ wp_ast_optimize (struct wp_node* node)
if (node->l->type == WP_NUMBER &&
node->r->type == WP_NUMBER)
{
- double v = wp_ast_eval(node);
+ double v = ((struct wp_number*)(node->l))->value
+ * ((struct wp_number*)(node->r))->value;
((struct wp_number*)node)->type = WP_NUMBER;
((struct wp_number*)node)->value = v;
}
@@ -629,7 +632,8 @@ wp_ast_optimize (struct wp_node* node)
if (node->l->type == WP_NUMBER &&
node->r->type == WP_NUMBER)
{
- double v = wp_ast_eval(node);
+ double v = ((struct wp_number*)(node->l))->value
+ / ((struct wp_number*)(node->r))->value;
((struct wp_number*)node)->type = WP_NUMBER;
((struct wp_number*)node)->value = v;
}
@@ -688,7 +692,7 @@ wp_ast_optimize (struct wp_node* node)
wp_ast_optimize(node->l);
if (node->l->type == WP_NUMBER)
{
- double v = wp_ast_eval(node);
+ double v = -((struct wp_number*)(node->l))->value;
((struct wp_number*)node)->type = WP_NUMBER;
((struct wp_number*)node)->value = v;
}