This is an automated email from the ASF dual-hosted git repository.

panxiaolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new c8e9a32bb2   [Function](cbrt)Add cbrt function for doris (#12523)
c8e9a32bb2 is described below

commit c8e9a32bb28297a80c37684982592fa525bcfb1a
Author: TaoZex <45089228+tao...@users.noreply.github.com>
AuthorDate: Mon Sep 12 19:58:45 2022 +0800

      [Function](cbrt)Add cbrt function for doris (#12523)
    
    Add cbrt function for doris
---
 be/src/exprs/math_functions.cpp                    |  1 +
 be/src/exprs/math_functions.h                      |  1 +
 be/src/vec/functions/math.cpp                      |  8 ++-
 be/test/vec/function/function_math_test.cpp        | 11 +++++
 .../sql-functions/math-functions/cbrt.md           | 57 ++++++++++++++++++++++
 .../sql-functions/math-functions/cbrt.md           | 57 ++++++++++++++++++++++
 gensrc/script/doris_builtins_functions.py          |  2 +
 7 files changed, 136 insertions(+), 1 deletion(-)

diff --git a/be/src/exprs/math_functions.cpp b/be/src/exprs/math_functions.cpp
index f21ebb2c62..3247f316c6 100644
--- a/be/src/exprs/math_functions.cpp
+++ b/be/src/exprs/math_functions.cpp
@@ -187,6 +187,7 @@ ONE_ARG_MATH_FN(acos, DoubleVal, DoubleVal, std::acos);
 ONE_ARG_MATH_FN(tan, DoubleVal, DoubleVal, std::tan);
 ONE_ARG_MATH_FN(atan, DoubleVal, DoubleVal, std::atan);
 ONE_ARG_MATH_FN(sqrt, DoubleVal, DoubleVal, std::sqrt);
+ONE_ARG_MATH_FN(cbrt, DoubleVal, DoubleVal, std::cbrt);
 ONE_ARG_MATH_FN(ceil, BigIntVal, DoubleVal, std::ceil);
 ONE_ARG_MATH_FN(floor, BigIntVal, DoubleVal, std::floor);
 ONE_ARG_MATH_FN(exp, DoubleVal, DoubleVal, std::exp);
diff --git a/be/src/exprs/math_functions.h b/be/src/exprs/math_functions.h
index edc4a394a7..9ac791ab61 100644
--- a/be/src/exprs/math_functions.h
+++ b/be/src/exprs/math_functions.h
@@ -88,6 +88,7 @@ public:
                                         const doris_udf::DoubleVal& v);
 
     static doris_udf::DoubleVal sqrt(doris_udf::FunctionContext*, const 
doris_udf::DoubleVal&);
+    static doris_udf::DoubleVal cbrt(doris_udf::FunctionContext*, const 
doris_udf::DoubleVal&);
     static doris_udf::DoubleVal pow(doris_udf::FunctionContext* ctx,
                                     const doris_udf::DoubleVal& base,
                                     const doris_udf::DoubleVal& exp);
diff --git a/be/src/vec/functions/math.cpp b/be/src/vec/functions/math.cpp
index 6278d33567..417f576a52 100644
--- a/be/src/vec/functions/math.cpp
+++ b/be/src/vec/functions/math.cpp
@@ -266,6 +266,11 @@ struct SqrtName {
 };
 using FunctionSqrt = FunctionMathUnary<UnaryFunctionVectorized<SqrtName, 
std::sqrt>>;
 
+struct CbrtName {
+    static constexpr auto name = "cbrt";
+};
+using FunctionCbrt = FunctionMathUnary<UnaryFunctionVectorized<CbrtName, 
std::cbrt>>;
+
 struct TanName {
     static constexpr auto name = "tan";
 };
@@ -444,6 +449,7 @@ void register_function_math(SimpleFunctionFactory& factory) 
{
     factory.register_function<FunctionSin>();
     factory.register_function<FunctionSqrt>();
     factory.register_alias("sqrt", "dsqrt");
+    factory.register_function<FunctionCbrt>();
     factory.register_function<FunctionTan>();
     factory.register_function<FunctionFloor>();
     factory.register_alias("floor", "dfloor");
@@ -460,4 +466,4 @@ void register_function_math(SimpleFunctionFactory& factory) 
{
     factory.register_function<FunctionDegrees>();
     factory.register_function<FunctionBin>();
 }
-} // namespace doris::vectorized
\ No newline at end of file
+} // namespace doris::vectorized
diff --git a/be/test/vec/function/function_math_test.cpp 
b/be/test/vec/function/function_math_test.cpp
index 940bbc995e..a93fb02603 100644
--- a/be/test/vec/function/function_math_test.cpp
+++ b/be/test/vec/function/function_math_test.cpp
@@ -108,6 +108,17 @@ TEST(MathFunctionTest, sqrt_test) {
     check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
 }
 
+TEST(MathFunctionTest, cbrt_test) {
+    std::string func_name = "cbrt";
+
+    InputTypeSet input_types = {TypeIndex::Float64};
+
+    DataSet data_set = {
+            {{0.0}, 0.0}, {{2.0}, 1.2599210498948734}, {{8.0}, 2.0}, 
{{-1000.0}, -10.0}};
+
+    check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+}
+
 TEST(MathFunctionTest, tan_test) {
     std::string func_name = "tan"; //tan(x)
 
diff --git a/docs/en/docs/sql-manual/sql-functions/math-functions/cbrt.md 
b/docs/en/docs/sql-manual/sql-functions/math-functions/cbrt.md
new file mode 100644
index 0000000000..24fcba137e
--- /dev/null
+++ b/docs/en/docs/sql-manual/sql-functions/math-functions/cbrt.md
@@ -0,0 +1,57 @@
+---
+{
+    "title": "cbrt",
+    "language": "en"
+}
+---
+
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+## cbrt
+
+### description
+#### Syntax
+
+`DOUBLE cbrt(DOUBLE x)`
+Returns the cube root of x.
+
+### example
+
+```
+mysql> select cbrt(8);
++-----------+
+| cbrt(8.0) |
++-----------+
+|         2 |
++-----------+
+mysql> select cbrt(2.0);
++--------------------+
+| cbrt(2.0)          |
++--------------------+
+| 1.2599210498948734 |
++--------------------+
+mysql> select cbrt(-1000.0);
++---------------+
+| cbrt(-1000.0) |
++---------------+
+|           -10 |
++---------------+
+```
+
+### keywords
+       CBRT
diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/math-functions/cbrt.md 
b/docs/zh-CN/docs/sql-manual/sql-functions/math-functions/cbrt.md
new file mode 100644
index 0000000000..73178f2003
--- /dev/null
+++ b/docs/zh-CN/docs/sql-manual/sql-functions/math-functions/cbrt.md
@@ -0,0 +1,57 @@
+---
+{
+    "title": "cbrt",
+    "language": "zh-CN"
+}
+---
+
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+## cbrt
+
+### description
+#### Syntax
+
+`DOUBLE cbrt(DOUBLE x)`
+返回`x`的立方根.
+
+### example
+
+```
+mysql> select cbrt(8);
++-----------+
+| cbrt(8.0) |
++-----------+
+|         2 |
++-----------+
+mysql> select cbrt(2.0);
++--------------------+
+| cbrt(2.0)          |
++--------------------+
+| 1.2599210498948734 |
++--------------------+
+mysql> select cbrt(-1000.0);
++---------------+
+| cbrt(-1000.0) |
++---------------+
+|           -10 |
++---------------+
+```
+
+### keywords
+       CBRT
diff --git a/gensrc/script/doris_builtins_functions.py 
b/gensrc/script/doris_builtins_functions.py
index 9b9eafaba9..28f9832d44 100755
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -1715,6 +1715,8 @@ visible_functions = [
 
     [['sqrt', 'dsqrt'], 'DOUBLE', ['DOUBLE'],
             
'_ZN5doris13MathFunctions4sqrtEPN9doris_udf15FunctionContextERKNS1_9DoubleValE',
 '', '', 'vec', ''],
+    [['cbrt'], 'DOUBLE', ['DOUBLE'],
+            
'_ZN5doris13MathFunctions4cbrtEPN9doris_udf15FunctionContextERKNS1_9DoubleValE',
 '', '', 'vec', ''],
     [['pow', 'power', 'dpow', 'fpow'], 'DOUBLE', ['DOUBLE', 'DOUBLE'],
             
'_ZN5doris13MathFunctions3powEPN9doris_udf15FunctionContextERKNS1_9DoubleValES6_',
 '', '', 'vec', ''],
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to