Path: blob/main/py-polars/tests/unit/sql/test_trigonometric.py
6939 views
from __future__ import annotations12import math34import polars as pl5from polars.testing import assert_frame_equal678def test_arctan2() -> None:9twoRootTwo = math.sqrt(2) / 2.010df = pl.DataFrame( # noqa: F84111{12"y": [twoRootTwo, -twoRootTwo, twoRootTwo, -twoRootTwo],13"x": [twoRootTwo, twoRootTwo, -twoRootTwo, -twoRootTwo],14}15)16res = pl.sql(17"""18SELECT19ATAN2D(y,x) as "atan2d",20ATAN2(y,x) as "atan2"21FROM df22""",23eager=True,24)25df_result = pl.DataFrame({"atan2d": [45.0, -45.0, 135.0, -135.0]})26df_result = df_result.with_columns(pl.col("atan2d").cast(pl.Float64))27df_result = df_result.with_columns(pl.col("atan2d").radians().alias("atan2"))2829assert_frame_equal(df_result, res)303132def test_trig() -> None:33df = pl.DataFrame(34{35"a": [-4.0, -3.0, -2.0, -1.00001, 0.0, 1.00001, 2.0, 3.0, 4.0],36}37)3839ctx = pl.SQLContext(df=df)40res = ctx.execute(41"""42SELECT43asin(1.0)/a as "pi values",44cos(asin(1.0)/a) AS "cos",45cot(asin(1.0)/a) AS "cot",46sin(asin(1.0)/a) AS "sin",47tan(asin(1.0)/a) AS "tan",4849cosd(asind(1.0)/a) AS "cosd",50cotd(asind(1.0)/a) AS "cotd",51sind(asind(1.0)/a) AS "sind",52tand(asind(1.0)/a) AS "tand",53541.0/a as "inverse pi values",55acos(1.0/a) AS "acos",56asin(1.0/a) AS "asin",57atan(1.0/a) AS "atan",5859acosd(1.0/a) AS "acosd",60asind(1.0/a) AS "asind",61atand(1.0/a) AS "atand"62FROM df63""",64eager=True,65)6667df_result = pl.DataFrame(68{69"pi values": [70-0.392699,71-0.523599,72-0.785398,73-1.570781,74float("inf"),751.570781,760.785398,770.523599,780.392699,79],80"cos": [810.92388,820.866025,830.707107,840.000016,85float("nan"),860.000016,870.707107,880.866025,890.92388,90],91"cot": [92-2.414214,93-1.732051,94-1.0,95-0.000016,96float("nan"),970.000016,981.0,991.732051,1002.414214,101],102"sin": [103-0.382683,104-0.5,105-0.707107,106-1.0,107float("nan"),1081,1090.707107,1100.5,1110.382683,112],113"tan": [114-0.414214,115-0.57735,116-1,117-63662.613851,118float("nan"),11963662.613851,1201,1210.57735,1220.414214,123],124"cosd": [1250.92388,1260.866025,1270.707107,1280.000016,129float("nan"),1300.000016,1310.707107,1320.866025,1330.92388,134],135"cotd": [136-2.414214,137-1.732051,138-1.0,139-0.000016,140float("nan"),1410.000016,1421.0,1431.732051,1442.414214,145],146"sind": [147-0.382683,148-0.5,149-0.707107,150-1.0,151float("nan"),1521,1530.707107,1540.5,1550.382683,156],157"tand": [158-0.414214,159-0.57735,160-1,161-63662.613851,162float("nan"),16363662.613851,1641,1650.57735,1660.414214,167],168"inverse pi values": [169-0.25,170-0.333333,171-0.5,172-0.99999,173float("inf"),1740.99999,1750.5,1760.333333,1770.25,178],179"acos": [1801.823477,1811.910633,1822.094395,1833.137121,184float("nan"),1850.004472,1861.047198,1871.230959,1881.318116,189],190"asin": [191-0.25268,192-0.339837,193-0.523599,194-1.566324,195float("nan"),1961.566324,1970.523599,1980.339837,1990.25268,200],201"atan": [202-0.244979,203-0.321751,204-0.463648,205-0.785393,2061.570796,2070.785393,2080.463648,2090.321751,2100.244979,211],212"acosd": [213104.477512,214109.471221,215120.0,216179.743767,217float("nan"),2180.256233,21960.0,22070.528779,22175.522488,222],223"asind": [224-14.477512,225-19.471221,226-30.0,227-89.743767,228float("nan"),22989.743767,23030.0,23119.471221,23214.477512,233],234"atand": [235-14.036243,236-18.434949,237-26.565051,238-44.999714,23990.0,24044.999714,24126.565051,24218.434949,24314.036243,244],245}246)247248assert_frame_equal(left=df_result, right=res, abs_tol=1e-5)249250251