// Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        public CharArithmetic(IArithmeticProvider provider, ArithmeticRules rule)
            : base(provider, rule)
        {
        }
 /// <inheritdoc/>
 protected override IArithmetic <Int16> CreateNew(ArithmeticRules rules)
 {
     return(new Int16Arithmetic(Provider, rules));
 }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        public SByteArithmetic(IArithmeticProvider provider, ArithmeticRules rule)
            : base(provider, rule)
        {
        }
 /// <inheritdoc/>
 protected override IArithmetic <Char> CreateNew(ArithmeticRules rules)
 {
     return(new CharArithmetic(Provider, rules));
 }
 /// <inheritdoc/>
 protected override IArithmetic <Double> CreateNew(ArithmeticRules rules)
 {
     return(new DoubleArithmetic(Provider, rules));
 }
 /// <inheritdoc/>
 protected override IArithmetic <SByte> CreateNew(ArithmeticRules rules)
 {
     return(new SByteArithmetic(Provider, rules));
 }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        public DecimalArithmetic(IArithmeticProvider provider, ArithmeticRules rule)
            : base(provider, rule)
        {
        }
 /// <inheritdoc/>
 protected override IArithmetic <Decimal> CreateNew(ArithmeticRules rules)
 {
     return(new DecimalArithmetic(Provider, rules));
 }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        public UInt64Arithmetic(IArithmeticProvider provider, ArithmeticRules rule)
            : base(provider, rule)
        {
        }
 /// <inheritdoc/>
 protected override IArithmetic <UInt64> CreateNew(ArithmeticRules rules)
 {
     return(new UInt64Arithmetic(Provider, rules));
 }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        /// <param name="provider">Arithmetic provider this instance is bound to.</param>
        /// <param name="rules">Arithmetic rules.</param>
        public WrappingArithmetic(IArithmeticProvider provider, ArithmeticRules rules)
            : base(provider, rules)
        {
            ArgumentValidator.EnsureArgumentNotNull(provider, "provider");
            BaseArithmetic = provider.GetArithmetic <TBase>();
        }