Fractions

a = 2
b = 3
c = 5
d = 7
print tostr$( a , b ) + " + " + tostr$( c , d )
call add a , b , c , d
print "=" + tostr$( a , b )
print
print tostr$( a , b ) + " - " + tostr$( c , d )
call subtract a , b , c , d
print "=" + tostr$( a , b )
print
print tostr$( a , b ) + " * " + tostr$( c , d )
call multiply a , b , c , d
print "=" + tostr$( a , b )
print
print tostr$( a , b )
print "----------------------"
print tostr$( c , d )
call divide a , b , c , d
print "=" + tostr$( a , b )
print
end
sub add byref a , byref b , c , d
a = a * d + c * b
b = b * d
q = gcd( a , b )
a = a / q
b = b / q
end sub
sub subtract byref a , byref b , c , d
a = a * d - c * b
b = b * d
q = gcd( a , b )
a = a / q
b = b / q
end sub
sub multiply byref a , byref b , c , d
a = a * d * d
b = b * c
q = gcd( a , b )
a = a / q
b = b / q
end sub
sub divide byref a , byref b , c , d
a = a * c
b = b * d
q = gcd( a , b )
a = a / q
b = b / q
end sub
function tostr$( a , b )
if b = 0 then tostr$ = "division by zero !!"
if a = 0 then tostr$ = "0"
q = gcd( a , b )
a = a / q
b = b / q
c = int( a / b )
if c = a / b then
tostr$ = str$( c )
else
if c > 0 then
tostr$ = str$( c ) + " " _
+ str$( a - c * b ) + " / " + str$( b )
else
tostr$ = str$( a ) + " / " + str$( b )
end if
end if
end function
function gcd( a , b )
while a <> b
if a < b then b = b - a
if a > b then a = a - b
wend
gcd = a
end function