public function mod($value)
    {
        $value = Cast::Float($value);

        if ($value == 0) {
            throw new InvalidArgumentException('Division by zero');
        }

        if ($this->value === null) {
            return new FloatType($this->value);
        }

        return new FloatType($this->value % $value);
    }