# Math Class

## Definition

Provides constants and static methods for trigonometric, logarithmic, and other common mathematical functions.

``public ref class Math abstract sealed``
``public ref class Math sealed``
``public static class Math``
``public sealed class Math``
``type Math = class``
``Public Class Math``
``Public NotInheritable Class Math``
Inheritance
Math

## Examples

The following example uses several mathematical and trigonometric functions from the Math class to calculate the inner angles of a trapezoid.

``````/// <summary>
/// The following class represents simple functionality of the trapezoid.
/// </summary>
using namespace System;

public ref class MathTrapezoidSample
{
private:
double m_longBase;
double m_shortBase;
double m_leftLeg;
double m_rightLeg;

public:
MathTrapezoidSample( double longbase, double shortbase, double leftLeg, double rightLeg )
{
m_longBase = Math::Abs( longbase );
m_shortBase = Math::Abs( shortbase );
m_leftLeg = Math::Abs( leftLeg );
m_rightLeg = Math::Abs( rightLeg );
}

private:
double GetRightSmallBase()
{
return (Math::Pow( m_rightLeg, 2.0 ) - Math::Pow( m_leftLeg, 2.0 ) + Math::Pow( m_longBase, 2.0 ) + Math::Pow( m_shortBase, 2.0 ) - 2 * m_shortBase * m_longBase) / (2 * (m_longBase - m_shortBase));
}

public:
double GetHeight()
{
double x = GetRightSmallBase();
return Math::Sqrt( Math::Pow( m_rightLeg, 2.0 ) - Math::Pow( x, 2.0 ) );
}

double GetSquare()
{
return GetHeight() * m_longBase / 2.0;
}

{
double sinX = GetHeight() / m_leftLeg;
return Math::Round( Math::Asin( sinX ), 2 );
}

{
double x = GetRightSmallBase();
double cosX = (Math::Pow( m_rightLeg, 2.0 ) + Math::Pow( x, 2.0 ) - Math::Pow( GetHeight(), 2.0 )) / (2 * x * m_rightLeg);
return Math::Round( Math::Acos( cosX ), 2 );
}

double GetLeftBaseDegreeAngle()
{
double x = GetLeftBaseRadianAngle() * 180 / Math::PI;
return Math::Round( x, 2 );
}

double GetRightBaseDegreeAngle()
{
double x = GetRightBaseRadianAngle() * 180 / Math::PI;
return Math::Round( x, 2 );
}

};

int main()
{
MathTrapezoidSample^ trpz = gcnew MathTrapezoidSample( 20.0,10.0,8.0,6.0 );
Console::WriteLine( "The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0" );
double h = trpz->GetHeight();
Console::WriteLine( "Trapezoid height is: {0}", h.ToString() );
Console::WriteLine( "Trapezoid left base angle is: {0} Radians", dxR.ToString() );
Console::WriteLine( "Trapezoid right base angle is: {0} Radians", dyR.ToString() );
double dxD = trpz->GetLeftBaseDegreeAngle();
Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dxD.ToString() );
double dyD = trpz->GetRightBaseDegreeAngle();
Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dyD.ToString() );
}
``````
``````/// <summary>
/// The following class represents simple functionality of the trapezoid.
/// </summary>
using System;

namespace MathClassCS
{
class MathTrapezoidSample
{
private double m_longBase;
private double m_shortBase;
private double m_leftLeg;
private double m_rightLeg;

public MathTrapezoidSample(double longbase, double shortbase, double leftLeg, double rightLeg)
{
m_longBase = Math.Abs(longbase);
m_shortBase = Math.Abs(shortbase);
m_leftLeg = Math.Abs(leftLeg);
m_rightLeg = Math.Abs(rightLeg);
}

private double GetRightSmallBase()
{
return (Math.Pow(m_rightLeg,2.0) - Math.Pow(m_leftLeg,2.0) + Math.Pow(m_longBase,2.0) + Math.Pow(m_shortBase,2.0) - 2* m_shortBase * m_longBase)/ (2*(m_longBase - m_shortBase));
}

public double GetHeight()
{
double x = GetRightSmallBase();
return Math.Sqrt(Math.Pow(m_rightLeg,2.0) - Math.Pow(x,2.0));
}

public double GetSquare()
{
return GetHeight() * m_longBase / 2.0;
}

{
double sinX = GetHeight()/m_leftLeg;
return Math.Round(Math.Asin(sinX),2);
}

{
double x = GetRightSmallBase();
double cosX = (Math.Pow(m_rightLeg,2.0) + Math.Pow(x,2.0) - Math.Pow(GetHeight(),2.0))/(2*x*m_rightLeg);
return Math.Round(Math.Acos(cosX),2);
}

public double GetLeftBaseDegreeAngle()
{
double x = GetLeftBaseRadianAngle() * 180/ Math.PI;
return Math.Round(x,2);
}

public double GetRightBaseDegreeAngle()
{
double x = GetRightBaseRadianAngle() * 180/ Math.PI;
return Math.Round(x,2);
}

static void Main(string[] args)
{
MathTrapezoidSample trpz = new MathTrapezoidSample(20.0, 10.0, 8.0, 6.0);
Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0");
double h = trpz.GetHeight();
Console.WriteLine("Trapezoid height is: " + h.ToString());
Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians");
Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians");
double dxD = trpz.GetLeftBaseDegreeAngle();
Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees");
double dyD = trpz.GetRightBaseDegreeAngle();
Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees");
}
}
}
``````
``````open System

/// The following class represents simple functionality of the trapezoid.
type MathTrapezoidSample(longbase, shortbase, leftLeg, rightLeg) =
member _.GetRightSmallBase() =
(Math.Pow(rightLeg, 2.) - Math.Pow(leftLeg, 2.) + Math.Pow(longbase, 2.) + Math.Pow(shortbase, 2.) - 2. * shortbase * longbase) / (2. * (longbase - shortbase))

member this.GetHeight() =
let x = this.GetRightSmallBase()
Math.Sqrt(Math.Pow(rightLeg, 2.) - Math.Pow(x, 2.))

member this.GetSquare() =
this.GetHeight() * longbase / 2.

let sinX = this.GetHeight() / leftLeg
Math.Round(Math.Asin sinX,2)

let x = this.GetRightSmallBase()
let cosX = (Math.Pow(rightLeg, 2.) + Math.Pow(x, 2.) - Math.Pow(this.GetHeight(), 2.))/(2. * x * rightLeg)
Math.Round(Math.Acos cosX, 2)

member this.GetLeftBaseDegreeAngle() =
let x = this.GetLeftBaseRadianAngle() * 180. / Math.PI
Math.Round(x, 2)

member this.GetRightBaseDegreeAngle() =
let x = this.GetRightBaseRadianAngle() * 180. / Math.PI
Math.Round(x, 2)

let trpz = MathTrapezoidSample(20., 10., 8., 6.)
printfn "The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0"
let h = trpz.GetHeight()
printfn \$"Trapezoid height is: {h}"
printfn \$"Trapezoid left base angle is: {dxR} Radians"
printfn \$"Trapezoid right base angle is: {dyR} Radians"
let dxD = trpz.GetLeftBaseDegreeAngle()
printfn \$"Trapezoid left base angle is: {dxD} Degrees"
let dyD = trpz.GetRightBaseDegreeAngle()
printfn \$"Trapezoid left base angle is: {dyD} Degrees"
``````
``````'The following class represents simple functionality of the trapezoid.
Class MathTrapezoidSample

Private m_longBase As Double
Private m_shortBase As Double
Private m_leftLeg As Double
Private m_rightLeg As Double

Public Sub New(ByVal longbase As Double, ByVal shortbase As Double, ByVal leftLeg As Double, ByVal rightLeg As Double)
m_longBase = Math.Abs(longbase)
m_shortBase = Math.Abs(shortbase)
m_leftLeg = Math.Abs(leftLeg)
m_rightLeg = Math.Abs(rightLeg)
End Sub

Private Function GetRightSmallBase() As Double
GetRightSmallBase = (Math.Pow(m_rightLeg, 2) - Math.Pow(m_leftLeg, 2) + Math.Pow(m_longBase, 2) + Math.Pow(m_shortBase, 2) - 2 * m_shortBase * m_longBase) / (2 * (m_longBase - m_shortBase))
End Function

Public Function GetHeight() As Double
Dim x As Double = GetRightSmallBase()
GetHeight = Math.Sqrt(Math.Pow(m_rightLeg, 2) - Math.Pow(x, 2))
End Function

Public Function GetSquare() As Double
GetSquare = GetHeight() * m_longBase / 2
End Function

Dim sinX As Double = GetHeight() / m_leftLeg
End Function

Dim x As Double = GetRightSmallBase()
Dim cosX As Double = (Math.Pow(m_rightLeg, 2) + Math.Pow(x, 2) - Math.Pow(GetHeight(), 2)) / (2 * x * m_rightLeg)
End Function

Public Function GetLeftBaseDegreeAngle() As Double
Dim x As Double = GetLeftBaseRadianAngle() * 180 / Math.PI
GetLeftBaseDegreeAngle = Math.Round(x, 2)
End Function

Public Function GetRightBaseDegreeAngle() As Double
Dim x As Double = GetRightBaseRadianAngle() * 180 / Math.PI
GetRightBaseDegreeAngle = Math.Round(x, 2)
End Function

Public Shared Sub Main()
Dim trpz As MathTrapezoidSample = New MathTrapezoidSample(20, 10, 8, 6)
Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0")
Dim h As Double = trpz.GetHeight()
Console.WriteLine("Trapezoid height is: " + h.ToString())
Dim dxR As Double = trpz.GetLeftBaseRadianAngle()
Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians")
Dim dyR As Double = trpz.GetRightBaseRadianAngle()
Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians")
Dim dxD As Double = trpz.GetLeftBaseDegreeAngle()
Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees")
Dim dyD As Double = trpz.GetRightBaseDegreeAngle()
Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees")
End Sub
End Class
``````

## Fields

 Represents the natural logarithmic base, specified by the constant, `e`. Represents the ratio of the circumference of a circle to its diameter, specified by the constant, π. Represents the number of radians in one turn, specified by the constant, τ.

## Methods

 Returns the absolute value of a Decimal number. Returns the absolute value of a double-precision floating-point number. Returns the absolute value of a 16-bit signed integer. Returns the absolute value of a 32-bit signed integer. Returns the absolute value of a 64-bit signed integer. Returns the absolute value of a native signed integer. Returns the absolute value of an 8-bit signed integer. Returns the absolute value of a single-precision floating-point number. Returns the angle whose cosine is the specified number. Returns the angle whose hyperbolic cosine is the specified number. Returns the angle whose sine is the specified number. Returns the angle whose hyperbolic sine is the specified number. Returns the angle whose tangent is the specified number. Returns the angle whose tangent is the quotient of two specified numbers. Returns the angle whose hyperbolic tangent is the specified number. Produces the full product of two 32-bit numbers. Produces the full product of two 64-bit numbers. Produces the full product of two unsigned 64-bit numbers. Returns the largest value that compares less than a specified value. Returns the smallest value that compares greater than a specified value. Returns the cube root of a specified number. Returns the smallest integral value that is greater than or equal to the specified decimal number. Returns the smallest integral value that is greater than or equal to the specified double-precision floating-point number. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns `value` clamped to the inclusive range of `min` and `max`. Returns a value with the magnitude of `x` and the sign of `y`. Returns the cosine of the specified angle. Returns the hyperbolic cosine of the specified angle. Produces the quotient and the remainder of two unsigned 8-bit numbers. Produces the quotient and the remainder of two signed 16-bit numbers. Produces the quotient and the remainder of two signed 32-bit numbers. Calculates the quotient of two 32-bit signed integers and also returns the remainder in an output parameter. Produces the quotient and the remainder of two signed 64-bit numbers. Calculates the quotient of two 64-bit signed integers and also returns the remainder in an output parameter. Produces the quotient and the remainder of two signed native-size numbers. Produces the quotient and the remainder of two signed 8-bit numbers. Produces the quotient and the remainder of two unsigned 16-bit numbers. Produces the quotient and the remainder of two unsigned 32-bit numbers. Produces the quotient and the remainder of two unsigned 64-bit numbers. Produces the quotient and the remainder of two unsigned native-size numbers. Returns `e` raised to the specified power. Returns the largest integral value less than or equal to the specified decimal number. Returns the largest integral value less than or equal to the specified double-precision floating-point number. Returns (x * y) + z, rounded as one ternary operation. Returns the remainder resulting from the division of a specified number by another specified number. Returns the base 2 integer logarithm of a specified number. Returns the natural (base `e`) logarithm of a specified number. Returns the logarithm of a specified number in a specified base. Returns the base 10 logarithm of a specified number. Returns the base 2 logarithm of a specified number. Returns the larger of two 8-bit unsigned integers. Returns the larger of two decimal numbers. Returns the larger of two double-precision floating-point numbers. Returns the larger of two 16-bit signed integers. Returns the larger of two 32-bit signed integers. Returns the larger of two 64-bit signed integers. Returns the larger of two native signed integers. Returns the larger of two 8-bit signed integers. Returns the larger of two single-precision floating-point numbers. Returns the larger of two 16-bit unsigned integers. Returns the larger of two 32-bit unsigned integers. Returns the larger of two 64-bit unsigned integers. Returns the larger of two native unsigned integers. Returns the larger magnitude of two double-precision floating-point numbers. Returns the smaller of two 8-bit unsigned integers. Returns the smaller of two decimal numbers. Returns the smaller of two double-precision floating-point numbers. Returns the smaller of two 16-bit signed integers. Returns the smaller of two 32-bit signed integers. Returns the smaller of two 64-bit signed integers. Returns the smaller of two native signed integers. Returns the smaller of two 8-bit signed integers. Returns the smaller of two single-precision floating-point numbers. Returns the smaller of two 16-bit unsigned integers. Returns the smaller of two 32-bit unsigned integers. Returns the smaller of two 64-bit unsigned integers. Returns the smaller of two native unsigned integers. Returns the smaller magnitude of two double-precision floating-point numbers. Returns a specified number raised to the specified power. Returns an estimate of the reciprocal of a specified number. Returns an estimate of the reciprocal square root of a specified number. Rounds a decimal value to the nearest integral value, and rounds midpoint values to the nearest even number. Rounds a decimal value to a specified number of fractional digits, and rounds midpoint values to the nearest even number. Rounds a decimal value to a specified number of fractional digits using the specified rounding convention. Rounds a decimal value an integer using the specified rounding convention. Rounds a double-precision floating-point value to the nearest integral value, and rounds midpoint values to the nearest even number. Rounds a double-precision floating-point value to a specified number of fractional digits, and rounds midpoint values to the nearest even number. Rounds a double-precision floating-point value to a specified number of fractional digits using the specified rounding convention. Rounds a double-precision floating-point value to an integer using the specified rounding convention. Returns x * 2^n computed efficiently. Returns an integer that indicates the sign of a decimal number. Returns an integer that indicates the sign of a double-precision floating-point number. Returns an integer that indicates the sign of a 16-bit signed integer. Returns an integer that indicates the sign of a 32-bit signed integer. Returns an integer that indicates the sign of a 64-bit signed integer. Returns an integer that indicates the sign of a native sized signed integer. Returns an integer that indicates the sign of an 8-bit signed integer. Returns an integer that indicates the sign of a single-precision floating-point number. Returns the sine of the specified angle. Returns the sine and cosine of the specified angle. Returns the hyperbolic sine of the specified angle. Returns the square root of a specified number. Returns the tangent of the specified angle. Returns the hyperbolic tangent of the specified angle. Calculates the integral part of a specified decimal number. Calculates the integral part of a specified double-precision floating-point number.