Add `atan2` binary operator
Signed-off-by: Levi Harrison <git@leviharrison.dev>
This commit is contained in:
parent
d77c985f8c
commit
8547a2bd86
|
@ -2116,6 +2116,8 @@ func vectorElemBinop(op parser.ItemType, lhs, rhs float64) (float64, bool) {
|
||||||
return lhs, lhs >= rhs
|
return lhs, lhs >= rhs
|
||||||
case parser.LTE:
|
case parser.LTE:
|
||||||
return lhs, lhs <= rhs
|
return lhs, lhs <= rhs
|
||||||
|
case parser.ATAN2:
|
||||||
|
return math.Atan2(lhs, rhs), true
|
||||||
}
|
}
|
||||||
panic(errors.Errorf("operator %q not allowed for operations between Vectors", op))
|
panic(errors.Errorf("operator %q not allowed for operations between Vectors", op))
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ NEQ_REGEX
|
||||||
POW
|
POW
|
||||||
SUB
|
SUB
|
||||||
AT
|
AT
|
||||||
|
ATAN2
|
||||||
%token operatorsEnd
|
%token operatorsEnd
|
||||||
|
|
||||||
// Aggregators.
|
// Aggregators.
|
||||||
|
@ -156,7 +157,7 @@ START_METRIC_SELECTOR
|
||||||
%left LAND LUNLESS
|
%left LAND LUNLESS
|
||||||
%left EQLC GTE GTR LSS LTE NEQ
|
%left EQLC GTE GTR LSS LTE NEQ
|
||||||
%left ADD SUB
|
%left ADD SUB
|
||||||
%left MUL DIV MOD
|
%left MUL DIV MOD ATAN2
|
||||||
%right POW
|
%right POW
|
||||||
|
|
||||||
// Offset modifiers do not have associativity.
|
// Offset modifiers do not have associativity.
|
||||||
|
@ -237,6 +238,7 @@ aggregate_modifier:
|
||||||
|
|
||||||
// Operator precedence only works if each of those is listed separately.
|
// Operator precedence only works if each of those is listed separately.
|
||||||
binary_expr : expr ADD bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
binary_expr : expr ADD bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
||||||
|
| expr ATAN2 bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
||||||
| expr DIV bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
| expr DIV bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
||||||
| expr EQLC bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
| expr EQLC bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
||||||
| expr GTE bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
| expr GTE bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) }
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -97,6 +97,7 @@ var key = map[string]ItemType{
|
||||||
"and": LAND,
|
"and": LAND,
|
||||||
"or": LOR,
|
"or": LOR,
|
||||||
"unless": LUNLESS,
|
"unless": LUNLESS,
|
||||||
|
"atan2": ATAN2,
|
||||||
|
|
||||||
// Aggregators.
|
// Aggregators.
|
||||||
"sum": SUM,
|
"sum": SUM,
|
||||||
|
|
Loading…
Reference in New Issue