Código fonte de tugalib.tuga_math

'''
Funções matemáticas
===================

O pytuga fornece algumas funções matemáticas comuns para a conveniência do
usuário.
'''

import math as _math
import random as _random
from tugalib.util import synonyms
pi = _math.pi
neperiano = _math.exp(1)


#
# Funções elementares e usadas em cálculo científico
#
[documentos]def raiz(x): ''' Retorna a raiz quadrada de x. Examples -------- >>> raiz(4) 2.0 Migração -------- Corresponde à função math.sqrt() no Python ''' return _math.sqrt(x)
@synonyms('sen')
[documentos]def seno(x): ''' Retorna o seno de x, onde x é medido em radianos. Pode ser chamada na forma curta (sen) ou longa (seno). Examples -------- >>> seno(0) 0.0 ''' return _math.sin(x)
@synonyms('cos')
[documentos]def cosseno(x): '''Retorna o cosseno de x, onde x é medido em radianos. Pode ser chamada na forma curta (cos) ou longa (cosseno). Examples -------- >>> cosseno(0) 1.0 ''' return _math.cos(x)
@synonyms('tan', 'tg')
[documentos]def tangente(x): ''' Retorna a tangente de x, onde x é medido em radianos. Pode ser chamada na forma curta (tan) ou longa (tangente). Examples -------- >>> tangente(0) 0.0 ''' return _math.tan(x)
@synonyms('exp')
[documentos]def exponencial(x): ''' Retorna a exponencial de x. Pode ser chamada na forma curta (exp) ou longa (exponencial). Examples -------- >>> exponencial(1) 2.718281828459045 ''' return _math.exp(x)
@synonyms('log', 'ln')
[documentos]def logarítimo(x): ''' Retorna o logarítimo natural de x. Pode ser chamada na forma curta (log) ou longa (logarítimo). Examples -------- >>> logarítimo(1) 0.0 ''' return _math.log(x)
[documentos]def log10(x): ''' Retorna o logarítimo de x na base 10. Examples -------- >>> log10(10) 1.0 ''' return _math.log10(x)
# # Controle de arredondamento e sinal dos números #
[documentos]def módulo(x): ''' Retorna o módulo de x. Examples -------- >>> módulo(-1) 1 >>> módulo(1) 1 ''' return abs(x)
[documentos]def sinal(x): ''' Retorna 1, -1 ou 0, dependendo do sinal de x. Examples -------- >>> sinal(-32.0) -1 ''' if x == 0: return 0 elif x > 0: return 1 elif x < 0: return -1 else: raise ValueError('argumento não possui sinal definido')
@synonyms('arredonde')
[documentos]def arredondar(x): ''' Arredonda o número x para o inteiro mais pŕoximo. Examples -------- >>> arredondar(1.6) 2 >>> arredondar(1.4) 1 ''' return int(round(x))
@synonyms('trunque')
[documentos]def truncar(x): ''' Remove a parte decimal do número. Examples -------- >>> truncar(1.6) 1 >>> truncar(1.4) 1 ''' return int(x)
# # Funções em listas de números #
[documentos]def máximo(lista): ''' Retorna o maior valor da lista dada. Examples -------- >>> máximo([1, 5, 42, 0]) 42 ''' return max(lista)
[documentos]def mínimo(lista): ''' Retorna o menor valor da lista dada. Examples -------- >>> mínimo([1, 5, 42, 0]) 0 ''' return min(lista)
[documentos]def soma(números): ''' Retorna o resultado da soma da sequência de números dada. Examples -------- >>> soma([1, 2, 3, 4]) 10 ''' return sum(números)
[documentos]def produto(números): ''' Retorna o resultado do produto dos números dados. Examples -------- >>> produto([1, 2, 3, 4, 5]) 120 ''' prod = 1 for x in números: prod *= x return prod
[documentos]def todos(sequência): ''' Retorna Verdadeiro se todos os objetos da sequência dada forem verdadeiros e Falso caso contrário. Examples -------- >>> todos([Verdadeiro, Verdadeiro]) # doctest: +SKIP Verdadeiro >>> todos([Verdadeiro, Falso]) # doctest: +SKIP Falso ''' return all(sequência)
[documentos]def algum(sequência): ''' Retorna Verdadeiro se algum dos objetos da sequência dada for verdadeiro e Falso caso contrário. Examples -------- >>> algum([Verdadeiro, Verdadeiro]) # doctest: +SKIP Verdadeiro >>> algum([Verdadeiro, Falso]) # doctest: +SKIP Falso ''' return any(sequência)
# # Números aleatórios #
[documentos]def aleatório(): '''Retorna um número aleatório no intervalo [0, 1]''' return _random.random()
[documentos]def inteiro_aleatório(início, fim): '''Retorna um inteiro aleatório dentro do intervalo [início, fim]''' return _random.randint(início, fim)
@synonyms('lance_dados')
[documentos]def lançar_dado(): '''Retorna um número aleatório entre 1 e 6, como num lance de dados comuns''' return _random.randint(1, 6)
if __name__ == '__main__': import doctest doctest.testmod()