/// <summary>
 /// Visits a <see cref="MagnitudeExpression"/>.
 /// </summary>
 /// <param name="magnitudeExpression">The magnitude expression.</param>
 /// <param name="value">The value.</param>
 /// <param name="currentResult">The current result.</param>
 public void Magnitude(MagnitudeExpression magnitudeExpression, double value, Reference <double> currentResult)
 {
     currentResult.Value = value
                           * Math.Pow(
         this.PrivateVisit(magnitudeExpression.Lhs, 1, currentResult),
         magnitudeExpression.Rhs.Constant);
 }
Exemple #2
0
 /// <summary>
 /// Visits a <see cref="MagnitudeExpression" />.
 /// </summary>
 /// <param name="magnitudeExpression">The magnitude expression.</param>
 /// <param name="rewritingParameters">The rewriting parameters.</param>
 /// <param name="currentResult">The current result.</param>
 public void Magnitude(
     MagnitudeExpression magnitudeExpression,
     RewritingParameters rewritingParameters,
     Reference <Expression> currentResult)
 {
     magnitudeExpression.Lhs.Visit(this, rewritingParameters, currentResult);
 }
        /// <summary>
        /// Visits a <see cref="MagnitudeExpression" />.
        /// </summary>
        /// <param name="magnitudeExpression">The magnitude expression.</param>
        /// <param name="notationParameters">The notation parameters.</param>
        /// <param name="notationVariables">The notation variables.</param>
        public void Magnitude(
            MagnitudeExpression magnitudeExpression,
            NotationParameters notationParameters,
            NotationVariables notationVariables)
        {
            var requestPrecendence = notationVariables.RequestPrecedence;
            var stringBuilder      = notationParameters.StringBuilder;

            this.HandleLeftPrecedence(requestPrecendence, stringBuilder);
            magnitudeExpression.Lhs.Visit(this, notationParameters, new NotationVariables(true, true));
            var constant = magnitudeExpression.Rhs.Constant.ToString(notationParameters.FormatProvider);

            switch (this.notationOptions.MagnitudeFormat)
            {
            case MagnitudeFormat.UseAboveLetter:
                if (magnitudeExpression.Lhs is MagnitudeExpression)
                {
                    stringBuilder.Append(Constants.Power);
                }

                stringBuilder.Append(CharacterConverter.ToExponentNotation(constant));
                break;

            default:
                stringBuilder.Append(Constants.Power);
                stringBuilder.Append(constant);
                break;
            }

            this.HandleRightPrecedence(requestPrecendence, stringBuilder);
        }
Exemple #4
0
        /// <summary>
        /// Executes the specified LHS.
        /// </summary>
        /// <param name="lhs">The LHS quantity.</param>
        /// <param name="rhs">The RHS value.</param>
        /// <returns>
        /// A <see cref="Quantity" />.
        /// </returns>
        public IQuantity Execute(IQuantity lhs, double rhs)
        {
            var magnitudeExpression = new MagnitudeExpression(lhs.Unit.GetExpression(), new ConstantExpression(rhs));

            return(new Quantity(
                       Math.Pow(lhs.Value, rhs),
                       this.unitFactory.Create(this.expressionReducer.Reduce(magnitudeExpression, true))));
        }
 /// <summary>
 /// Visits a <see cref="MagnitudeExpression" />.
 /// </summary>
 /// <param name="magnitudeExpression">The magnitude expression.</param>
 /// <param name="conversionParameters">The conversion parameters.</param>
 /// <param name="conversionVariables">The conversion variables.</param>
 public void Magnitude(
     MagnitudeExpression magnitudeExpression,
     ConversionParameters conversionParameters,
     ConversionVariables conversionVariables)
 {
     magnitudeExpression.Lhs.Visit(
         this,
         conversionParameters,
         new ConversionVariables(conversionVariables.Exponent * magnitudeExpression.Rhs.Constant, conversionVariables.ExpressionIsPartOfDenominator));
 }
        /// <summary>
        /// Adds a msup tag and visits the lhs and rhs expression.
        /// </summary>
        /// <param name="magnitudeExpression">The magnitude expression.</param>
        /// <param name="multiplicationSign">The multiplication sign.</param>
        /// <param name="xElement">The x element.</param>
        public void Magnitude(
            MagnitudeExpression magnitudeExpression,
            MultiplicationSign multiplicationSign,
            XElement xElement)
        {
            var magnitude = new XElement(MathML.Msup);

            xElement.Add(magnitude);
            magnitudeExpression.Lhs.Visit(this, multiplicationSign, magnitude);
            magnitudeExpression.Rhs.Visit(this, multiplicationSign, magnitude);
        }
Exemple #7
0
 /// <summary>
 /// Visits a <see cref="MagnitudeExpression" />.
 /// </summary>
 /// <param name="magnitudeExpression">The magnitude expression.</param>
 /// <param name="_">The ignored.</param>
 /// <param name="currentResult">The current result.</param>
 public void Magnitude(MagnitudeExpression magnitudeExpression, ˍ _, Reference <Expression> currentResult)
 {
     currentResult.Value = new MagnitudeExpression(
         this.PrivateVisit(magnitudeExpression.Lhs, currentResult),
         magnitudeExpression.Rhs);
 }