350 lines
8.8 KiB
Go
350 lines
8.8 KiB
Go
package math
|
|
|
|
import (
|
|
_ "unsafe"
|
|
|
|
"github.com/goplus/llgo/py"
|
|
)
|
|
|
|
const LLGoPackage = "py.math"
|
|
|
|
// Return the arc cosine (measured in radians) of x.
|
|
//
|
|
// The result is between 0 and pi.
|
|
//
|
|
//go:linkname Acos py.acos
|
|
func Acos(x *py.Object) *py.Object
|
|
|
|
// Return the inverse hyperbolic cosine of x.
|
|
//
|
|
//go:linkname Acosh py.acosh
|
|
func Acosh(x *py.Object) *py.Object
|
|
|
|
// Return the arc sine (measured in radians) of x.
|
|
//
|
|
// The result is between -pi/2 and pi/2.
|
|
//
|
|
//go:linkname Asin py.asin
|
|
func Asin(x *py.Object) *py.Object
|
|
|
|
// Return the inverse hyperbolic sine of x.
|
|
//
|
|
//go:linkname Asinh py.asinh
|
|
func Asinh(x *py.Object) *py.Object
|
|
|
|
// Return the arc tangent (measured in radians) of x.
|
|
//
|
|
// The result is between -pi/2 and pi/2.
|
|
//
|
|
//go:linkname Atan py.atan
|
|
func Atan(x *py.Object) *py.Object
|
|
|
|
// Return the arc tangent (measured in radians) of y/x.
|
|
//
|
|
// Unlike atan(y/x), the signs of both x and y are considered.
|
|
//
|
|
//go:linkname Atan2 py.atan2
|
|
func Atan2(y *py.Object, x *py.Object) *py.Object
|
|
|
|
// Return the inverse hyperbolic tangent of x.
|
|
//
|
|
//go:linkname Atanh py.atanh
|
|
func Atanh(x *py.Object) *py.Object
|
|
|
|
// Return the cube root of x.
|
|
//
|
|
//go:linkname Cbrt py.cbrt
|
|
func Cbrt(x *py.Object) *py.Object
|
|
|
|
// Return the ceiling of x as an Integral.
|
|
//
|
|
// This is the smallest integer >= x.
|
|
//
|
|
//go:linkname Ceil py.ceil
|
|
func Ceil(x *py.Object) *py.Object
|
|
|
|
// Return a float with the magnitude (absolute value) of x but the sign of y.
|
|
//
|
|
// On platforms that support signed zeros, copysign(1.0, -0.0)
|
|
// returns -1.0.
|
|
//
|
|
//go:linkname Copysign py.copysign
|
|
func Copysign(x *py.Object, y *py.Object) *py.Object
|
|
|
|
// Return the cosine of x (measured in radians).
|
|
//
|
|
//go:linkname Cos py.cos
|
|
func Cos(x *py.Object) *py.Object
|
|
|
|
// Return the hyperbolic cosine of x.
|
|
//
|
|
//go:linkname Cosh py.cosh
|
|
func Cosh(x *py.Object) *py.Object
|
|
|
|
// Convert angle x from radians to degrees.
|
|
//
|
|
//go:linkname Degrees py.degrees
|
|
func Degrees(x *py.Object) *py.Object
|
|
|
|
// Return the Euclidean distance between two points p and q.
|
|
//
|
|
// The points should be specified as sequences (or iterables) of
|
|
// coordinates. Both inputs must have the same dimension.
|
|
//
|
|
// Roughly equivalent to:
|
|
//
|
|
// sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
|
|
//
|
|
//go:linkname Dist py.dist
|
|
func Dist(p *py.Object, q *py.Object) *py.Object
|
|
|
|
// Error function at x.
|
|
//
|
|
//go:linkname Erf py.erf
|
|
func Erf(x *py.Object) *py.Object
|
|
|
|
// Complementary error function at x.
|
|
//
|
|
//go:linkname Erfc py.erfc
|
|
func Erfc(x *py.Object) *py.Object
|
|
|
|
// Return e raised to the power of x.
|
|
//
|
|
//go:linkname Exp py.exp
|
|
func Exp(x *py.Object) *py.Object
|
|
|
|
// Return 2 raised to the power of x.
|
|
//
|
|
//go:linkname Exp2 py.exp2
|
|
func Exp2(x *py.Object) *py.Object
|
|
|
|
// Return exp(x)-1.
|
|
//
|
|
// This function avoids the loss of precision involved in the direct evaluation of exp(x)-1 for small x.
|
|
//
|
|
//go:linkname Expm1 py.expm1
|
|
func Expm1(x *py.Object) *py.Object
|
|
|
|
// Return the absolute value of the float x.
|
|
//
|
|
//go:linkname Fabs py.fabs
|
|
func Fabs(x *py.Object) *py.Object
|
|
|
|
// Find n!.
|
|
//
|
|
// Raise a ValueError if x is negative or non-integral.
|
|
//
|
|
//go:linkname Factorial py.factorial
|
|
func Factorial(n *py.Object) *py.Object
|
|
|
|
// Return the floor of x as an Integral.
|
|
//
|
|
// This is the largest integer <= x.
|
|
//
|
|
//go:linkname Floor py.floor
|
|
func Floor(x *py.Object) *py.Object
|
|
|
|
// Return fmod(x, y), according to platform C.
|
|
//
|
|
// x % y may differ.
|
|
//
|
|
//go:linkname Fmod py.fmod
|
|
func Fmod(x *py.Object, y *py.Object) *py.Object
|
|
|
|
// Return the mantissa and exponent of x, as pair (m, e).
|
|
//
|
|
// m is a float and e is an int, such that x = m * 2.**e.
|
|
// If x is 0, m and e are both 0. Else 0.5 <= abs(m) < 1.0.
|
|
//
|
|
//go:linkname Frexp py.frexp
|
|
func Frexp(x *py.Object) *py.Object
|
|
|
|
// Return an accurate floating point sum of values in the iterable seq.
|
|
//
|
|
// Assumes IEEE-754 floating point arithmetic.
|
|
//
|
|
//go:linkname Fsum py.fsum
|
|
func Fsum(seq *py.Object) *py.Object
|
|
|
|
// Gamma function at x.
|
|
//
|
|
//go:linkname Gamma py.gamma
|
|
func Gamma(x *py.Object) *py.Object
|
|
|
|
// Greatest Common Divisor.
|
|
//
|
|
//go:linkname Gcd py.gcd
|
|
func Gcd(__llgo_va_list ...interface{}) *py.Object
|
|
|
|
// Return True if x is neither an infinity nor a NaN, and False otherwise.
|
|
//
|
|
//go:linkname Isfinite py.isfinite
|
|
func Isfinite(x *py.Object) *py.Object
|
|
|
|
// Return True if x is a positive or negative infinity, and False otherwise.
|
|
//
|
|
//go:linkname Isinf py.isinf
|
|
func Isinf(x *py.Object) *py.Object
|
|
|
|
// Return True if x is a NaN (not a number), and False otherwise.
|
|
//
|
|
//go:linkname Isnan py.isnan
|
|
func Isnan(x *py.Object) *py.Object
|
|
|
|
// Return the integer part of the square root of the input.
|
|
//
|
|
//go:linkname Isqrt py.isqrt
|
|
func Isqrt(n *py.Object) *py.Object
|
|
|
|
// Least Common Multiple.
|
|
//
|
|
//go:linkname Lcm py.lcm
|
|
func Lcm(__llgo_va_list ...interface{}) *py.Object
|
|
|
|
// Return x * (2**i).
|
|
//
|
|
// This is essentially the inverse of frexp().
|
|
//
|
|
//go:linkname Ldexp py.ldexp
|
|
func Ldexp(x *py.Object, i *py.Object) *py.Object
|
|
|
|
// Natural logarithm of absolute value of Gamma function at x.
|
|
//
|
|
//go:linkname Lgamma py.lgamma
|
|
func Lgamma(x *py.Object) *py.Object
|
|
|
|
// Return the base 10 logarithm of x.
|
|
//
|
|
//go:linkname Log10 py.log10
|
|
func Log10(x *py.Object) *py.Object
|
|
|
|
// Return the base 2 logarithm of x.
|
|
//
|
|
//go:linkname Log2 py.log2
|
|
func Log2(x *py.Object) *py.Object
|
|
|
|
// Return the fractional and integer parts of x.
|
|
//
|
|
// Both results carry the sign of x and are floats.
|
|
//
|
|
//go:linkname Modf py.modf
|
|
func Modf(x *py.Object) *py.Object
|
|
|
|
// Return x**y (x to the power of y).
|
|
//
|
|
//go:linkname Pow py.pow
|
|
func Pow(x *py.Object, y *py.Object) *py.Object
|
|
|
|
// Convert angle x from degrees to radians.
|
|
//
|
|
//go:linkname Radians py.radians
|
|
func Radians(x *py.Object) *py.Object
|
|
|
|
// Difference between x and the closest integer multiple of y.
|
|
//
|
|
// Return x - n*y where n*y is the closest integer multiple of y.
|
|
// In the case where x is exactly halfway between two multiples of
|
|
// y, the nearest even value of n is used. The result is always exact.
|
|
//
|
|
//go:linkname Remainder py.remainder
|
|
func Remainder(x *py.Object, y *py.Object) *py.Object
|
|
|
|
// Return the sine of x (measured in radians).
|
|
//
|
|
//go:linkname Sin py.sin
|
|
func Sin(x *py.Object) *py.Object
|
|
|
|
// Return the hyperbolic sine of x.
|
|
//
|
|
//go:linkname Sinh py.sinh
|
|
func Sinh(x *py.Object) *py.Object
|
|
|
|
// Return the square root of x.
|
|
//
|
|
//go:linkname Sqrt py.sqrt
|
|
func Sqrt(x *py.Object) *py.Object
|
|
|
|
// Return the tangent of x (measured in radians).
|
|
//
|
|
//go:linkname Tan py.tan
|
|
func Tan(x *py.Object) *py.Object
|
|
|
|
// Return the hyperbolic tangent of x.
|
|
//
|
|
//go:linkname Tanh py.tanh
|
|
func Tanh(x *py.Object) *py.Object
|
|
|
|
// Return the sum of products of values from two iterables p and q.
|
|
//
|
|
// Roughly equivalent to:
|
|
//
|
|
// sum(itertools.starmap(operator.mul, zip(p, q, strict=True)))
|
|
//
|
|
// For float and mixed int/float inputs, the intermediate products
|
|
// and sums are computed with extended precision.
|
|
//
|
|
//go:linkname Sumprod py.sumprod
|
|
func Sumprod(p *py.Object, q *py.Object) *py.Object
|
|
|
|
// Truncates the Real x to the nearest Integral toward 0.
|
|
//
|
|
// Uses the __trunc__ magic method.
|
|
//
|
|
//go:linkname Trunc py.trunc
|
|
func Trunc(x *py.Object) *py.Object
|
|
|
|
// Calculate the product of all the elements in the input iterable.
|
|
//
|
|
// The default start value for the product is 1.
|
|
//
|
|
// When the iterable is empty, return the start value. This function is
|
|
// intended specifically for use with numeric values and may reject
|
|
// non-numeric types.
|
|
//
|
|
//go:linkname Prod py.prod
|
|
func Prod(iterable *py.Object) *py.Object
|
|
|
|
// Number of ways to choose k items from n items without repetition and with order.
|
|
//
|
|
// Evaluates to n! / (n - k)! when k <= n and evaluates
|
|
// to zero when k > n.
|
|
//
|
|
// If k is not specified or is None, then k defaults to n
|
|
// and the function returns n!.
|
|
//
|
|
// Raises TypeError if either of the arguments are not integers.
|
|
// Raises ValueError if either of the arguments are negative.
|
|
//
|
|
//go:linkname Perm py.perm
|
|
func Perm(n *py.Object, k *py.Object) *py.Object
|
|
|
|
// Number of ways to choose k items from n items without repetition and without order.
|
|
//
|
|
// Evaluates to n! / (k! * (n - k)!) when k <= n and evaluates
|
|
// to zero when k > n.
|
|
//
|
|
// Also called the binomial coefficient because it is equivalent
|
|
// to the coefficient of k-th term in polynomial expansion of the
|
|
// expression (1 + x)**n.
|
|
//
|
|
// Raises TypeError if either of the arguments are not integers.
|
|
// Raises ValueError if either of the arguments are negative.
|
|
//
|
|
//go:linkname Comb py.comb
|
|
func Comb(n *py.Object, k *py.Object) *py.Object
|
|
|
|
// Return the floating-point value the given number of steps after x towards y.
|
|
//
|
|
// If steps is not specified or is None, it defaults to 1.
|
|
//
|
|
// Raises a TypeError, if x or y is not a double, or if steps is not an integer.
|
|
// Raises ValueError if steps is negative.
|
|
//
|
|
//go:linkname Nextafter py.nextafter
|
|
func Nextafter(x *py.Object, y *py.Object) *py.Object
|
|
|
|
// Return the value of the least significant bit of the float x.
|
|
//
|
|
//go:linkname Ulp py.ulp
|
|
func Ulp(x *py.Object) *py.Object
|