public static double DecodeBinary(BinaryRepresentation binaryRepresentation, DomainDefinition domainDefinition, int precision)
        {
            var d = Convert.ToInt64(binaryRepresentation.AsString(), 2);

            var bitsNumber = BitsNumberForDomainDimension(domainDefinition, precision);

            return((domainDefinition.End - domainDefinition.Start) * (d / (Pow(2, bitsNumber) - 1)) + domainDefinition.Start);
        }
        public DimensionalDomain WithDefinition(DomainDefinition definition)
        {
            if (definitions.Count >= dimension)
            {
                throw new InvalidOperationException("Cannot declare any more definitions into this domain!");
            }

            definitions.Add(definition);

            return(this);
        }
        public static int BitsNumberForDomainDimension(DomainDefinition dimensionDomain, int precision)
        {
            var logArgument = (dimensionDomain.End - dimensionDomain.Start) * Pow(10, precision);

            return((int)Log(logArgument, 2));
        }