Source code for mrmath._numtheor

# -*- coding: utf-8 -*-

"""Zahlenteoretische und "darstellende" Funktionen.

.. moduleauthor:: Michael Rippstein <michael@anatas.ch>
"""

import math


[docs]def frac(x: float) -> float: """Liefert den Nachkommateil einer Zahl. Returns ------- Nachkommanteil Notes ----- Der Nachkommanteil ist immer positive. Examples -------- .. testsetup:: ntfrac from mrmath import frac .. doctest:: ntfrac >>> frac(1.123) 0.123 >>> frac(-1.123) 0.123 >>> frac(0.123) 0.123 >>> frac(-0.123) 0.123 >>> round(frac(7654321.123456789),9) 0.123456789 """ if x < 0: return -(x - math.ceil(x)) return x - math.floor(x)
[docs]def modulo(x: float, y: float) -> float: """Berechnet x mod y. Parameters ---------- x Dividend y Divisor Returns ------- float ``x mod y`` Examples -------- .. testsetup:: ntmod from mrmath import modulo .. doctest:: ntmod >>> round(modulo(370, 360), 1) 10.0 >>> round(modulo(-370, 360), 1) 350.0 >>> round(modulo(-30, 360), 1) 330.0 >>> round(modulo(-0, 360), 1) 0.0 >>> round(modulo(360, 360), 1) 0.0 >>> round(modulo(370, -360), 1) -10.0 >>> round(modulo(-370, -360), 1) -350.0 >>> round(modulo(-30, -360), 1) -330.0 >>> round(modulo(-0, -360), 1) 0.0 >>> round(modulo(360, -360), 1) 0.0 """ return y * (frac(x / y) if x >= 0 else (1 - frac(x / y)))
[docs]def iseven(number: int) -> bool: """Prüft ob eine ganzzahl gerade ist. Parameters ---------- number ganze zahl Returns ------- bool ist `n` gerade Examples -------- .. testsetup:: nteven from mrmath import iseven .. doctest:: nteven >>> iseven(0) True >>> iseven(1) False >>> iseven(2) True >>> iseven(-1) False >>> iseven(-2) True """ return not bool(number % 2)
[docs]def isodd(number: int) -> bool: """Prüft ob eine ganzzahl ungerade ist. Parameters ---------- n ganze zahl Returns ------- boolean ist ``n`` ungerade Examples -------- .. testsetup:: ntodd from mrmath import isodd .. doctest:: ntodd >>> isodd(0) False >>> isodd(1) True >>> isodd(2) False >>> isodd(-1) True >>> isodd(-2) False """ return bool(number % 2)