summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2020-06-18 19:25:35 +0200
committerLester Solbakken <lesters@oath.com>2020-06-18 19:25:35 +0200
commit06bde5687b214a97c72e41ee40ac76ad837a3d7d (patch)
tree2d7ef9a8a2017d4f986744dfde82f8b671f4227b /searchlib
parent5688a50eb92fc4459e51dccca45858aecca8264a (diff)
Add erf (the error function)
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/abi-spec.json2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java3
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj4
3 files changed, 8 insertions, 1 deletions
diff --git a/searchlib/abi-spec.json b/searchlib/abi-spec.json
index 6bce791914c..c22d906e2b2 100644
--- a/searchlib/abi-spec.json
+++ b/searchlib/abi-spec.json
@@ -1024,6 +1024,7 @@
"public static final int SQRT",
"public static final int TAN",
"public static final int TANH",
+ "public static final int ERF",
"public static final int ATAN2",
"public static final int FMOD",
"public static final int LDEXP",
@@ -1373,6 +1374,7 @@
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function sqrt",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function tan",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function tanh",
+ "public static final enum com.yahoo.searchlib.rankingexpression.rule.Function erf",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function atan2",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function fmod",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function ldexp",
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
index c3c1c371a68..99afb3b38d0 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
+import com.yahoo.tensor.functions.ScalarFunctions;
+
import java.io.Serializable;
import static java.lang.Math.*;
@@ -36,6 +38,7 @@ public enum Function implements Serializable {
sqrt { public double evaluate(double x, double y) { return sqrt(x); } },
tan { public double evaluate(double x, double y) { return tan(x); } },
tanh { public double evaluate(double x, double y) { return tanh(x); } },
+ erf { public double evaluate(double x, double y) { return ScalarFunctions.Erf.erf(x); } },
atan2(2) { public double evaluate(double x, double y) { return atan2(x,y); } },
fmod(2) { public double evaluate(double x, double y) { return x % y; } },
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 8aa10bf7b34..5f27bbcbeee 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -115,6 +115,7 @@ TOKEN :
<SQRT: "sqrt"> |
<TAN: "tan"> |
<TANH: "tanh"> |
+ <ERF: "erf"> |
<ATAN2: "atan2"> |
<FMOD: "fmod"> |
@@ -727,7 +728,8 @@ Function unaryFunctionName() : { }
<SQUARE> { return Function.square; } |
<SQRT> { return Function.sqrt; } |
<TAN> { return Function.tan; } |
- <TANH> { return Function.tanh; }
+ <TANH> { return Function.tanh; } |
+ <ERF> { return Function.erf; }
}
Function binaryFunctionName() : { }