Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-sql/tests/functions_math.rs
6939 views
1
use polars_core::prelude::*;
2
use polars_lazy::prelude::*;
3
use polars_sql::*;
4
5
#[test]
6
fn test_math_functions() {
7
let df = df! {
8
"a" => [1.0]
9
}
10
.unwrap();
11
let mut context = SQLContext::new();
12
context.register("df", df.clone().lazy());
13
let sql = r#"
14
SELECT
15
a,
16
ABS(a) AS abs,
17
ACOS(a) AS acos,
18
ASIN(a) AS asin,
19
ATAN(a) AS atan,
20
PI() AS pi,
21
CEIL(a) AS ceil,
22
EXP(a) AS exp,
23
FLOOR(a) AS floor,
24
LN(a) AS ln,
25
LOG2(a) AS log2,
26
LOG10(a) AS log10,
27
LOG(a, 5) AS log5,
28
LOG1P(a) AS log1p,
29
POW(a, 2) AS pow,
30
SQRT(a) AS sqrt,
31
CBRT(a) AS cbrt
32
FROM df"#;
33
let df_sql = context.execute(sql).unwrap().collect().unwrap();
34
let df_pl = df
35
.lazy()
36
.select(&[
37
col("a"),
38
col("a").abs().alias("abs"),
39
col("a").arccos().alias("acos"),
40
col("a").arcsin().alias("asin"),
41
col("a").arctan().alias("atan"),
42
lit(std::f64::consts::PI).alias("pi"),
43
col("a").ceil().alias("ceil"),
44
col("a").exp().alias("exp"),
45
col("a").floor().alias("floor"),
46
col("a").log(lit(std::f64::consts::E)).alias("ln"),
47
col("a").log(lit(2.0)).alias("log2"),
48
col("a").log(lit(10.0)).alias("log10"),
49
col("a").log(lit(5.0)).alias("log5"),
50
col("a").log1p().alias("log1p"),
51
col("a").pow(2.0).alias("pow"),
52
col("a").sqrt().alias("sqrt"),
53
col("a").cbrt().alias("cbrt"),
54
])
55
.collect()
56
.unwrap();
57
println!("{}", df_pl.head(Some(10)));
58
println!("{}", df_sql.head(Some(10)));
59
assert!(df_sql.equals_missing(&df_pl));
60
}
61
62