--- /dev/null
+# Stubs for math\r
+# See: http://docs.python.org/2/library/math.html\r
+\r
+from typing import Tuple, Iterable, SupportsFloat, SupportsInt\r
+\r
+import sys\r
+\r
+e = ... # type: float\r
+pi = ... # type: float\r
+if sys.version_info >= (3, 5):\r
+ inf = ... # type: float\r
+ nan = ... # type: float\r
+if sys.version_info >= (3, 6):\r
+ tau = ... # type: float\r
+\r
+def acos(x: SupportsFloat) -> float: ...\r
+def acosh(x: SupportsFloat) -> float: ...\r
+def asin(x: SupportsFloat) -> float: ...\r
+def asinh(x: SupportsFloat) -> float: ...\r
+def atan(x: SupportsFloat) -> float: ...\r
+def atan2(y: SupportsFloat, x: SupportsFloat) -> float: ...\r
+def atanh(x: SupportsFloat) -> float: ...\r
+if sys.version_info >= (3,):\r
+ def ceil(x: SupportsFloat) -> int: ...\r
+else:\r
+ def ceil(x: SupportsFloat) -> float: ...\r
+def copysign(x: SupportsFloat, y: SupportsFloat) -> float: ...\r
+def cos(x: SupportsFloat) -> float: ...\r
+def cosh(x: SupportsFloat) -> float: ...\r
+def degrees(x: SupportsFloat) -> float: ...\r
+def erf(x: SupportsFloat) -> float: ...\r
+def erfc(x: SupportsFloat) -> float: ...\r
+def exp(x: SupportsFloat) -> float: ...\r
+def expm1(x: SupportsFloat) -> float: ...\r
+def fabs(x: SupportsFloat) -> float: ...\r
+def factorial(x: SupportsInt) -> int: ...\r
+if sys.version_info >= (3,):\r
+ def floor(x: SupportsFloat) -> int: ...\r
+else:\r
+ def floor(x: SupportsFloat) -> float: ...\r
+def fmod(x: SupportsFloat, y: SupportsFloat) -> float: ...\r
+def frexp(x: SupportsFloat) -> Tuple[float, int]: ...\r
+def fsum(iterable: Iterable) -> float: ...\r
+def gamma(x: SupportsFloat) -> float: ...\r
+if sys.version_info >= (3, 5):\r
+ def gcd(a: int, b: int) -> int: ...\r
+def hypot(x: SupportsFloat, y: SupportsFloat) -> float: ...\r
+if sys.version_info >= (3, 5):\r
+ def isclose(a: SupportsFloat, b: SupportsFloat, rel_tol: SupportsFloat = ..., abs_tol: SupportsFloat = ...) -> bool: ...\r
+def isinf(x: SupportsFloat) -> bool: ...\r
+if sys.version_info >= (3,):\r
+ def isfinite(x: SupportsFloat) -> bool: ...\r
+def isnan(x: SupportsFloat) -> bool: ...\r
+def ldexp(x: SupportsFloat, i: int) -> float: ...\r
+def lgamma(x: SupportsFloat) -> float: ...\r
+def log(x: SupportsFloat, base: SupportsFloat = ...) -> float: ...\r
+def log10(x: SupportsFloat) -> float: ...\r
+def log1p(x: SupportsFloat) -> float: ...\r
+if sys.version_info >= (3, 3):\r
+ def log2(x: SupportsFloat) -> float: ...\r
+def modf(x: SupportsFloat) -> Tuple[float, float]: ...\r
+def pow(x: SupportsFloat, y: SupportsFloat) -> float: ...\r
+def radians(x: SupportsFloat) -> float: ...\r
+if sys.version_info >= (3, 7):\r
+ def remainder(x: SupportsFloat, y: SupportsFloat) -> float: ...\r
+def sin(x: SupportsFloat) -> float: ...\r
+def sinh(x: SupportsFloat) -> float: ...\r
+def sqrt(x: SupportsFloat) -> float: ...\r
+def tan(x: SupportsFloat) -> float: ...\r
+def tanh(x: SupportsFloat) -> float: ...\r
+def trunc(x: SupportsFloat) -> int: ...\r