TizzyT

BigRational -TizzyT

Nov 8th, 2015
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.06 KB | None | 0 0
  1. Public Structure BigRational
  2.     Private Numer As BigDecimal
  3.     Private Denom As BigDecimal
  4.  
  5.     Public Sub New(ByVal Number As BigDecimal)
  6.         Numer = Number
  7.         Denom = BigDecimal.One
  8.     End Sub
  9.     Public Sub New(ByVal Numerator As BigDecimal, ByVal Denominator As BigDecimal)
  10.         Numer = Numerator
  11.         Denom = Denominator
  12.     End Sub
  13.  
  14.     Public Shared Widening Operator CType(ByVal N As BigDecimal) As BigRational
  15.         Return New BigRational(N)
  16.     End Operator
  17.     Public Shared Widening Operator CType(ByVal N As Integer) As BigRational
  18.         Return New BigRational(N)
  19.     End Operator
  20.     Public Shared Widening Operator CType(ByVal N As Double) As BigRational
  21.         Return New BigRational(N)
  22.     End Operator
  23.     Public Shared Widening Operator CType(ByVal N As Decimal) As BigRational
  24.         Return New BigRational(N)
  25.     End Operator
  26.     Public Shared Widening Operator CType(ByVal N As Single) As BigRational
  27.         Return New BigRational(N)
  28.     End Operator
  29.     Public Shared Widening Operator CType(ByVal N As Short) As BigRational
  30.         Return New BigRational(N)
  31.     End Operator
  32.     Public Shared Widening Operator CType(ByVal N As UInteger) As BigRational
  33.         Return New BigRational(N)
  34.     End Operator
  35.     Public Shared Widening Operator CType(ByVal N As ULong) As BigRational
  36.         Return New BigRational(N)
  37.     End Operator
  38.     Public Shared Widening Operator CType(ByVal N As UShort) As BigRational
  39.         Return New BigRational(N)
  40.     End Operator
  41.     Public Shared Widening Operator CType(ByVal N As Byte) As BigRational
  42.         Return New BigRational(N)
  43.     End Operator
  44.     Public Shared Widening Operator CType(ByVal N As SByte) As BigRational
  45.         Return New BigRational(N)
  46.     End Operator
  47.     Public Shared Widening Operator CType(ByVal N() As BigDecimal) As BigRational
  48.         Return New BigRational(N(0), N(1))
  49.     End Operator
  50.  
  51.     Public Shared Operator +(ByVal N1 As BigRational, ByVal N2 As BigRational) As BigRational
  52.         N1.Numer *= N2.Denom
  53.         N2.Numer *= N1.Denom
  54.         Return New BigRational(N1.Numer + N2.Numer, N1.Denom * N2.Denom)
  55.     End Operator
  56.     Public Shared Operator -(ByVal N1 As BigRational, ByVal N2 As BigRational) As BigRational
  57.         N1.Numer *= N2.Denom
  58.         N2.Numer *= N1.Denom
  59.         Return New BigRational(N1.Numer - N2.Numer, N1.Denom * N2.Denom)
  60.     End Operator
  61.     Public Shared Operator *(ByVal N1 As BigRational, ByVal N2 As BigRational) As BigRational
  62.         Return New BigRational(N1.Numer * N2.Numer, N1.Denom * N2.Denom)
  63.     End Operator
  64.     Public Shared Operator /(ByVal N1 As BigRational, ByVal N2 As BigRational) As BigRational
  65.         Return New BigRational(N1.Numer * N2.Denom, N1.Denom * N2.Numer)
  66.     End Operator
  67.     Public Shared Operator ^(ByVal N1 As BigRational, ByVal N2 As Integer) As BigRational
  68.         Return New BigRational(N1.Numer ^ N2, N1.Denom ^ N2)
  69.     End Operator
  70.  
  71.     Public Shared Widening Operator CType(ByVal N As BigRational) As String
  72.         Return N.Numer / N.Denom
  73.     End Operator
  74. End Structure
Advertisement
Add Comment
Please, Sign In to add comment