Source code for gamspy.math.log_power

from __future__ import annotations

from typing import TYPE_CHECKING

from gamspy.math.misc import MathOp

if TYPE_CHECKING:
    from gamspy._algebra.operable import Operable
    from gamspy._types import OperableType


[docs] def exp(x: OperableType) -> MathOp: """ Exponential of ``x`` (i.e. ``e^x``) Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import exp >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = exp(a) >>> math.isclose(b.toValue(), 44.701184493300815) True """ return MathOp("exp", (x,))
[docs] def log(x: OperableType) -> MathOp: """ Natural logarithm of ``x`` (i.e. logarithm base ``e`` of ``x``) Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import log >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = log(a) >>> math.isclose(b.toValue(), 1.33500106673234) True """ return MathOp("log", (x,))
[docs] def log_beta(x: OperableType, y: OperableType) -> MathOp: """ Log beta function (i.e. ``log(B(x, y)``) Parameters ---------- x : OperableType y : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import log_beta >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = log_beta(a,5) >>> math.isclose(b.toValue(), -5.45446741772822) True """ return MathOp("logBeta", (x, y))
[docs] def log_gamma(x: OperableType) -> MathOp: """ Log gamma function of ``x`` Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter >>> from gamspy.math import log_gamma >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = log_gamma(a) """ return MathOp("logGamma", (x,))
[docs] def logit(x: OperableType) -> MathOp: """ Logit Transformation (i.e. ``log(x / (1 - x))``) for ``x`` in ``(0, 1)`` Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import logit >>> m = Container() >>> a = Parameter(m, "a", records=0.8) >>> b = Parameter(m, "b") >>> b[...] = logit(a) >>> math.isclose(b.toValue(), 1.3862943611198908) True """ return MathOp("logit", (x,))
[docs] def log2(x: OperableType) -> MathOp: """ Binary logarithm (i.e. logarithm base ``2`` of ``x``) Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import log2 >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = log2(a) >>> math.isclose(b.toValue(), 1.9259994185562224) True """ return MathOp("log2", (x,))
[docs] def log10(x: OperableType) -> MathOp: """ Common logarithm (i.e. logarithm base ``10`` of ``x``) Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import log10 >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = log10(a) >>> math.isclose(b.toValue(), 0.5797835966168101) True """ return MathOp("log10", (x,))
[docs] def power(base: float | Operable, exponent: OperableType) -> MathOp: """ Base to the exponent power (i.e. ``base ^ exponent``) Parameters ---------- base : OperableType exponent : OperableType Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import power >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = power(a, 3) >>> math.isclose(b.toValue(), 54.87199999999999) True """ return MathOp("power", (base, exponent))
[docs] def cv_power(base: float, exponent: OperableType) -> MathOp: """ Real power (i.e. ``base ^ exponent`` where ``base >= 0``; error for ``base < 0``) Parameters ---------- base : float exponent : OperableType Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter >>> from gamspy.math import cv_power >>> m = Container() >>> a = Parameter(m, "a", records=4) >>> b = Parameter(m, "b") >>> b[...] = cv_power(3, a) """ if not isinstance(base, (float, int)): raise ValueError("Base must be a number") if base < 0: raise ValueError("Base must be greater than or equal to 0") return MathOp("cvPower", (base, exponent))
[docs] def rpower(base: OperableType | Operable, exponent: OperableType): """ Returns ``x^y`` for ``x > 0`` and also for ``x = 0`` and restricted values of ``y`` (Error if ``x < 0``) Parameters ---------- base : OperableType exponent : OperableType Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter, Set >>> from gamspy.math import rpower >>> m = Container() >>> i = Set(m, name="i", records=["i1", "i2"]) >>> a = Parameter(m, "a", domain=i, records=[("i1", 3.8)]) >>> b = Parameter(m, "b", domain=i) >>> b[i] = rpower(a[i], 3) """ return MathOp("rPower", (base, exponent))
[docs] def sign_power(base: OperableType, exponent: float): """ Signed power: ``sign(base) * |base|^exponent``, for ``exponent > 0`` Parameters ---------- base : OperableType exponent : float Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter, Set >>> from gamspy.math import sign_power >>> m = Container() >>> i = Set(m, name="i", records=["i1", "i2"]) >>> a = Parameter(m, "a", domain=i, records=[("i1", 3.8)]) >>> b = Parameter(m, "b", domain=i) >>> b[i] = sign_power(a[i], 5) """ if not isinstance(exponent, (float, int)): raise ValueError("Exponent must be a number") if exponent <= 0: raise ValueError("Exponent must be greater than 0") return MathOp("signPower", (base, exponent))
[docs] def sllog10(x: OperableType, S: int | float = 1.0e-150) -> MathOp: """ Smooth (linear) logarithm base 10 Parameters ---------- x : OperableType S : int | float, by default 1.0e-150 Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import sllog10 >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = sllog10(a) >>> math.isclose(b.toValue(), 0.5797835966168101) True """ return MathOp("sllog10", (x, S))
[docs] def sqlog10(x: OperableType, S: int | float = 1.0e-150) -> MathOp: """ Smooth (quadratic) logarithm base 10 Parameters ---------- x : OperableType S : int | float, by default 1.0e-150 Returns ------- MathOp Examples -------- >>> import math >>> from gamspy import Container, Parameter >>> from gamspy.math import sqlog10 >>> m = Container() >>> a = Parameter(m, "a", records=3.8) >>> b = Parameter(m, "b") >>> b[...] = sqlog10(a) >>> math.isclose(b.toValue(), 0.5797835966168101) True """ return MathOp("sqlog10", (x, S))
[docs] def vc_power(base: OperableType, exponent: OperableType): """ Returns ``x^y`` for ``x >= 0`` (error for ``x < 0``) Parameters ---------- base : OperableType exponent : OperableType Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter >>> from gamspy.math import vc_power >>> m = Container() >>> a = Parameter(m, "a", records=4) >>> b = Parameter(m, "b") >>> b[...] = vc_power(a, 3) """ return MathOp("vcPower", (base, exponent))
[docs] def sqr(x: OperableType) -> MathOp: """ Square of ``x`` (i.e. ``x^2``) Parameters ---------- x : OperableType Returns ------- MathOp Examples -------- >>> from gamspy import Container, Parameter >>> from gamspy.math import sqr >>> m = Container() >>> a = Parameter(m, "a", records=4) >>> b = Parameter(m, "b") >>> b[...] = sqr(a) >>> b.toValue() np.float64(16.0) """ return MathOp("sqr", (x,))