Constantes e auxiliares matemáticos inspirados no math.h do C, implementados em Bern puro.
import math
exp, log, sin, …) são calculadas com séries truncadas e métodos iterativos, então são aproximações precisas - não resultados exatos de hardware.
pi = 3.141592653589793tau = 6.283185307179586 (2π)e = 2.7182818284590452 * pi -- Saída: 6.283185307179586
Valor absoluto; preserva o tipo numérico da entrada.
abs(-7) -- Saída: 7
Alias de abs que espelha o fabs do C.
fabs(-3.5) -- Saída: 3.5
O menor de dois números, calculado em espaço de double.
fmin(3, 8) -- Saída: 3.0
O maior de dois números.
fmax(3, 8) -- Saída: 8.0
Restringe x ao intervalo [lo, hi].
clamp(15, 0, 10) -- Saída: 10.0 clamp(-2, 0, 10) -- Saída: 0.0
Resto de ponto flutuante (o fmod do C).
fmod(10, 3) -- Saída: 1
Eleva base a um expoente inteiro por exponenciação rápida. Expoentes negativos dão recíprocos.
pow(2, 8) -- Saída: 256 pow(2, -1) -- Saída: 0.5
Raiz quadrada via iteração de Newton–Raphson. Entradas negativas retornam NaN.
sqrt(16) -- Saída: 4.0
O comprimento da hipotenusa √(a² + b²).
hypot(3, 4) -- Saída: 5.0
e elevado a x (série de Taylor).
exp(1) -- Saída: ~2.718281828
Logaritmo natural (base e). Entradas não positivas retornam NaN.
log(e) -- Saída: ~1.0
Logaritmo base 10.
log10(1000) -- Saída: ~3.0
Todas as funções trigonométricas recebem e devolvem radianos.
Seno de um ângulo.
sin(pi / 2) -- Saída: ~1.0
Cosseno de um ângulo.
cos(0) -- Saída: 1.0
Tangente; NaN em múltiplos ímpares de π/2.
tan(pi / 4) -- Saída: ~1.0
Tangente inversa.
atan(1) -- Saída: ~0.785 (π/4)
Arco-tangente de dois argumentos que respeita o quadrante de (x, y).
atan2(1, 1) -- Saída: ~0.785 (π/4)
Converte graus em radianos.
toRadians(180) -- Saída: ~3.14159
Converte radianos em graus.
toDegrees(pi) -- Saída: ~180.0
Várias funções cooperam ao calcular geometria. Aqui está a distância entre dois pontos e o ângulo da reta entre eles em graus:
import math x1 = 0.0 y1 = 0.0 x2 = 3.0 y2 = 3.0 dx = x2 - x1 dy = y2 - y1 distance = hypot(dx, dy) -- Saída: ~4.2426 angle = toDegrees(atan2(dy, dx)) -- Saída: ~45.0
E usar clamp com pow para uma curva simples de "crescer e limitar":
import math def grow(level) -> clamp(pow(level, 2), 0, 100) grow(5) -- Saída: 25.0 grow(12) -- Saída: 100.0 (144 limitado)