/// <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); }
/// <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); }
/// <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); }
/// <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); }