summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorLester Solbakken <lesters@yahoo-inc.com>2017-11-14 12:40:22 +0100
committerLester Solbakken <lesters@yahoo-inc.com>2017-11-14 12:40:22 +0100
commitfe52b637bde1e2e1b11b6158666f9002e1c3cd0a (patch)
treea1b42074993cdd48aa102dc01d02ef392cbd563f /searchlib
parent58357a693f9ff78477e1d1a99ecbfad59a331420 (diff)
Fix 'Cannot combine two tensors using ldexp'
Also, make 'ldexp' in Java comparable to C++, as the library call in C++ does an implicit cast to int.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java1
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java2
2 files changed, 2 insertions, 1 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
index 935aadc4559..45988ef0776 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
@@ -123,6 +123,7 @@ public class TensorValue extends Value {
case atan2: return value.atan2(argument);
case pow: return value.pow(argument);
case fmod: return value.fmod(argument);
+ case ldexp: return value.ldexp(argument);
default: throw new UnsupportedOperationException("Cannot combine two tensors using " + function);
}
}
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 fc4a511b307..c3c1c371a68 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
@@ -39,7 +39,7 @@ public enum Function implements Serializable {
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; } },
- ldexp(2) { public double evaluate(double x, double y) { return x*pow(2,y); } },
+ ldexp(2) { public double evaluate(double x, double y) { return x*pow(2,(int)y); } },
max(2) { public double evaluate(double x, double y) { return max(x,y); } },
min(2) { public double evaluate(double x, double y) { return min(x,y); } },
pow(2) { public double evaluate(double x, double y) { return pow(x,y); } };