diff options
author | Håvard Pettersen <havardpe@oath.com> | 2021-06-16 11:57:57 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2021-06-18 13:53:21 +0000 |
commit | 13d53f151b8fef06e77c82aa380a0d11bf053a79 (patch) | |
tree | ab5d74823dd18582d4004817e42c3e9740717d5c /eval/src/apps/tensor_conformance | |
parent | 1bdde0b8222028ba205f10ca5efaccc791908de3 (diff) |
add 'bit(a,b)' math function
Diffstat (limited to 'eval/src/apps/tensor_conformance')
-rw-r--r-- | eval/src/apps/tensor_conformance/generate.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/eval/src/apps/tensor_conformance/generate.cpp b/eval/src/apps/tensor_conformance/generate.cpp index 9ae33c1234f..01936a879d0 100644 --- a/eval/src/apps/tensor_conformance/generate.cpp +++ b/eval/src/apps/tensor_conformance/generate.cpp @@ -232,11 +232,24 @@ void generate_join_expr(const vespalib::string &expr, const Sequence &seq, TestB } } +void generate_join_expr(const vespalib::string &expr, const Sequence &seq_a, const Sequence &seq_b, TestBuilder &dst) { + for (const auto &layouts: join_layouts) { + GenSpec a = GenSpec::from_desc(layouts.first).seq(seq_a); + GenSpec b = GenSpec::from_desc(layouts.second).seq(seq_b); + generate(expr, a, b, dst); + } +} + void generate_op2_join(const vespalib::string &op2_expr, const Sequence &seq, TestBuilder &dst) { generate_join_expr(op2_expr, seq, dst); generate_join_expr(fmt("join(a,b,f(a,b)(%s))", op2_expr.c_str()), seq, dst); } +[[maybe_unused]] void generate_op2_join(const vespalib::string &op2_expr, const Sequence &seq_a, const Sequence &seq_b, TestBuilder &dst) { + generate_join_expr(op2_expr, seq_a, seq_b, dst); + generate_join_expr(fmt("join(a,b,f(a,b)(%s))", op2_expr.c_str()), seq_a, seq_b, dst); +} + void generate_join(TestBuilder &dst) { generate_op2_join("a+b", Div16(N()), dst); generate_op2_join("a-b", Div16(N()), dst); @@ -259,6 +272,8 @@ void generate_join(TestBuilder &dst) { generate_op2_join("fmod(a,b)", Div16(N()), dst); generate_op2_join("min(a,b)", Div16(N()), dst); generate_op2_join("max(a,b)", Div16(N()), dst); + // TODO: test bit(a,b) when implemented in Java + // generate_op2_join("bit(a,b)", Seq({-128, -43, -1, 0, 85, 127}), Seq({0, 1, 2, 3, 4, 5, 6, 7}), dst); // inverted lambda generate_join_expr("join(a,b,f(a,b)(b-a))", Div16(N()), dst); // custom lambda @@ -276,11 +291,24 @@ void generate_merge_expr(const vespalib::string &expr, const Sequence &seq, Test } } +void generate_merge_expr(const vespalib::string &expr, const Sequence &seq_a, const Sequence &seq_b, TestBuilder &dst) { + for (const auto &layouts: merge_layouts) { + GenSpec a = GenSpec::from_desc(layouts.first).seq(seq_a); + GenSpec b = GenSpec::from_desc(layouts.second).seq(seq_b); + generate(expr, a, b, dst); + } +} + void generate_op2_merge(const vespalib::string &op2_expr, const Sequence &seq, TestBuilder &dst) { generate_merge_expr(op2_expr, seq, dst); generate_merge_expr(fmt("merge(a,b,f(a,b)(%s))", op2_expr.c_str()), seq, dst); } +[[maybe_unused]] void generate_op2_merge(const vespalib::string &op2_expr, const Sequence &seq_a, const Sequence &seq_b, TestBuilder &dst) { + generate_merge_expr(op2_expr, seq_a, seq_b, dst); + generate_merge_expr(fmt("merge(a,b,f(a,b)(%s))", op2_expr.c_str()), seq_a, seq_b, dst); +} + void generate_merge(TestBuilder &dst) { generate_op2_merge("a+b", Div16(N()), dst); generate_op2_merge("a-b", Div16(N()), dst); @@ -303,6 +331,8 @@ void generate_merge(TestBuilder &dst) { generate_op2_merge("fmod(a,b)", Div16(N()), dst); generate_op2_merge("min(a,b)", Div16(N()), dst); generate_op2_merge("max(a,b)", Div16(N()), dst); + // TODO: test bit(a,b) when implemented in Java + // generate_op2_merge("bit(a,b)", Seq({-128, -43, -1, 0, 85, 127}), Seq({0, 1, 2, 3, 4, 5, 6, 7}), dst); // inverted lambda generate_merge_expr("merge(a,b,f(a,b)(b-a))", Div16(N()), dst); // custom lambda |