rationals.anubis 1.23 KB

                       The Anubis Project. 

                        Rational numbers. 
                        
                        
   Author: Alain Prouté    (2014-09-06)
                        
                        
public type IQ:
  q(Int numerator, 
    Int denominator). 
    
public define IQ
  IQ x + IQ y 
  =
  if x is q(xn,xd) then
  if y is q(yn,yd) then 
  q(xn*yd+xd*yn,xd*yd). 
  
public define IQ
  IQ x - IQ y 
  =
  if x is q(xn,xd) then
  if y is q(yn,yd) then 
  q(xn*yd-xd*yn,xd*yd). 
  
public define IQ
  Int x + IQ y
  =
  if y is q(yn,yd) then 
  q(yd*x+yn,yd). 
  
public define IQ
  IQ x + Int y
  =
  if x is q(xn,xd) then 
  q(xn+y*xd,xd).   
  
public define IQ
  Int x - IQ y
  =
  if y is q(yn,yd) then 
  q(yd*x-yn,yd). 
  
public define IQ
  IQ x - Int y
  =
  if x is q(xn,xd) then 
  q(xn-y*xd,xd).   
  
public define IQ
  IQ x * IQ y
  =
  if x is q(xn,xd) then
  if y is q(yn,yd) then 
  q(xn*yn,xd*yd). 
  
public define IQ
  IQ x * Int y
  =
  if x is q(xn,xd) then 
  q(xn*y,xd).
  
public define IQ
  Int x * IQ y
  =
  if y is q(yn,yd) then 
  q(x*yn,yd).      
  
public define IQ
  IQ x \ IQ y
  =
  if x is q(xn,xd) then
  if y is q(yn,yd) then 
  q(xn*yd,xd*yn).