math.v: log_n, log2, exp2, cbrt and docs
parent
392b49c661
commit
e2a535c3ce
|
@ -21,6 +21,7 @@ const (
|
||||||
Log10E = 1.0 / Ln10
|
Log10E = 1.0 / Ln10
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Returns the absolute value.
|
||||||
pub fn abs(a f64) f64 {
|
pub fn abs(a f64) f64 {
|
||||||
if a < 0 {
|
if a < 0 {
|
||||||
return -a
|
return -a
|
||||||
|
@ -28,42 +29,62 @@ pub fn abs(a f64) f64 {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inverse cosine.
|
||||||
pub fn acos(a f64) f64 {
|
pub fn acos(a f64) f64 {
|
||||||
return C.acos(a)
|
return C.acos(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inverse sine.
|
||||||
pub fn asin(a f64) f64 {
|
pub fn asin(a f64) f64 {
|
||||||
return C.asin(a)
|
return C.asin(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inverse tangent
|
||||||
pub fn atan(a f64) f64 {
|
pub fn atan(a f64) f64 {
|
||||||
return C.atan(a)
|
return C.atan(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inverse tangent with two arguments, returns angle between the X axis and the point.
|
||||||
pub fn atan2(a, b f64) f64 {
|
pub fn atan2(a, b f64) f64 {
|
||||||
return C.atan2(a, b)
|
return C.atan2(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cubic root.
|
||||||
|
pub fn cbrt(a f64) f64 {
|
||||||
|
return C.cbrt(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the nearest integer equal or higher to the provided value.
|
||||||
pub fn ceil(a f64) f64 {
|
pub fn ceil(a f64) f64 {
|
||||||
return C.ceil(a)
|
return C.ceil(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cosine.
|
||||||
pub fn cos(a f64) f64 {
|
pub fn cos(a f64) f64 {
|
||||||
return C.cos(a)
|
return C.cos(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hyperbolic cosine.
|
||||||
pub fn cosh(a f64) f64 {
|
pub fn cosh(a f64) f64 {
|
||||||
return C.cosh(a)
|
return C.cosh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns euler number (e) raised to the provided power.
|
||||||
pub fn exp(a f64) f64 {
|
pub fn exp(a f64) f64 {
|
||||||
return C.exp(a)
|
return C.exp(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the base-2 exponential function of x.
|
||||||
|
pub fn exp2(a f64) f64 {
|
||||||
|
return C.exp2(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the nearest integer equal or lower of the provided value.
|
||||||
pub fn floor(a f64) f64 {
|
pub fn floor(a f64) f64 {
|
||||||
return C.floor(a)
|
return C.floor(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the floating-point remainder of number / denom (rounded towards zero):
|
||||||
pub fn fmod(a, b f64) f64 {
|
pub fn fmod(a, b f64) f64 {
|
||||||
return C.fmod(a, b)
|
return C.fmod(a, b)
|
||||||
}
|
}
|
||||||
|
@ -98,14 +119,27 @@ pub fn lcm(a, b int) int {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns natural (base e) logarithm of the provided value.
|
||||||
pub fn log(a f64) f64 {
|
pub fn log(a f64) f64 {
|
||||||
return C.log(a)
|
return C.log(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns base 2 logarithm of the provided value.
|
||||||
|
pub fn log2(a f64) f64 {
|
||||||
|
return C.log(a) / C.log(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the common (base-10) logarithm of x.
|
||||||
pub fn log10(a f64) f64 {
|
pub fn log10(a f64) f64 {
|
||||||
return C.log10(a)
|
return C.log10(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns base N logarithm of the provided value.
|
||||||
|
pub fn log_n(a, b f64) f64 {
|
||||||
|
return C.log(a) / C.log(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the maximum value of the two provided.
|
||||||
pub fn max(a, b f64) f64 {
|
pub fn max(a, b f64) f64 {
|
||||||
if a > b {
|
if a > b {
|
||||||
return a
|
return a
|
||||||
|
@ -113,6 +147,7 @@ pub fn max(a, b f64) f64 {
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the minimum value of all the values provided.
|
||||||
pub fn min(a, b f64) f64 {
|
pub fn min(a, b f64) f64 {
|
||||||
if a < b {
|
if a < b {
|
||||||
return a
|
return a
|
||||||
|
@ -120,46 +155,57 @@ pub fn min(a, b f64) f64 {
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns base raised to the provided power.
|
||||||
pub fn pow(a, b f64) f64 {
|
pub fn pow(a, b f64) f64 {
|
||||||
return C.pow(a, b)
|
return C.pow(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Radians conversion.
|
||||||
pub fn radians(degrees f64) f64 {
|
pub fn radians(degrees f64) f64 {
|
||||||
return degrees * (Pi / 180.0)
|
return degrees * (Pi / 180.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Degrees conversion.
|
||||||
pub fn degrees(radians f64) f64 {
|
pub fn degrees(radians f64) f64 {
|
||||||
return radians * (180.0 / Pi)
|
return radians * (180.0 / Pi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the integer nearest to the provided value.
|
||||||
pub fn round(f f64) f64 {
|
pub fn round(f f64) f64 {
|
||||||
return C.round(f)
|
return C.round(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sine.
|
||||||
pub fn sin(a f64) f64 {
|
pub fn sin(a f64) f64 {
|
||||||
return C.sin(a)
|
return C.sin(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hyperbolic sine.
|
||||||
pub fn sinh(a f64) f64 {
|
pub fn sinh(a f64) f64 {
|
||||||
return C.sinh(a)
|
return C.sinh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns square of the provided value.
|
||||||
pub fn sqrt(a f64) f64 {
|
pub fn sqrt(a f64) f64 {
|
||||||
return C.sqrt(a)
|
return C.sqrt(a)
|
||||||
}
|
}
|
||||||
|
// Tangent.
|
||||||
pub fn tan(a f64) f64 {
|
pub fn tan(a f64) f64 {
|
||||||
return C.tan(a)
|
return C.tan(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hyperbolic tangent.
|
||||||
pub fn tanh(a f64) f64 {
|
pub fn tanh(a f64) f64 {
|
||||||
return C.tanh(a)
|
return C.tanh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rounds a toward zero, returning the nearest integral value that is not
|
||||||
|
// larger in magnitude than a.
|
||||||
pub fn trunc(a f64) f64 {
|
pub fn trunc(a f64) f64 {
|
||||||
return C.trunc(a)
|
return C.trunc(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the factorial of the value provided.
|
||||||
pub fn factorial(a int) i64 {
|
pub fn factorial(a int) i64 {
|
||||||
mut prod := 1
|
mut prod := 1
|
||||||
for i:= 0; i < a; i++ {
|
for i:= 0; i < a; i++ {
|
||||||
|
|
Loading…
Reference in New Issue