anchor.diff:      let inline  internal denominator (Ratio(_,x)) = x
   
       type Ratio<'Integral> with
  -        static member inline (/) (Ratio(a,b), Ratio(c,d)) = (a </opMultiply/> d) </ratio/> (b </opMultiply/> c)
  +        static member inline (/) (Ratio(a,b), Ratio(c,d)) = (a *. d) </ratio/> (b *. c)
                                                 
  -        static member inline (+) (Ratio(a,b), Ratio(c,d)) = (a </opMultiply/> d </opPlus/>  c </opMultiply/> b) </ratio/> (b </opMultiply/> d)
  -        static member inline (-) (Ratio(a,b), Ratio(c,d)) = (a </opMultiply/> d </opMinus/> c </opMultiply/> b) </ratio/> (b </opMultiply/> d)
  -        static member inline (*) (Ratio(a,b), Ratio(c,d)) = (a </opMultiply/> c) </ratio/> (b </opMultiply/> d)
  -
  -    type Ratio<'RA> with static member inline instance (Num.Abs        , r:Ratio<_>, _) = fun () -> (abs    (numerator r)) </ratio/> (denominator r)
  -    type Ratio<'RA> with static member inline instance (Num.Signum     , r:Ratio<_>, _) = fun () -> (signum (numerator r)) </ratio/> G1()
  -    type Ratio<'RA> with static member inline instance (dm:Num.FromInteger, _:Ratio<_>) = fun (x:bigint) -> Inline.instance Num.FromInteger x </ratio/> G1()
  -    type Ratio<'RA> with static member inline instance (Num.Negate     , r:Ratio<_>, _) = fun () -> -(numerator r) </ratio/> (denominator r)
  +        static member inline (+) (Ratio(a,b), Ratio(c,d)) = (a *. d +. c *. b) </ratio/> (b *. d)
  +        static member inline (-) (Ratio(a,b), Ratio(c,d)) = (a *. d -. c *. b) </ratio/> (b *. d)
  +        static member inline (*) (Ratio(a,b), Ratio(c,d)) = (a *. c) </ratio/> (b *. d)
  +
  +    type Ratio<'RA> with static member inline instance (_:Num.Abs        , r:Ratio<_>, _) = fun () -> (abs    (numerator r)) </ratio/> (denominator r)
  +    type Ratio<'RA> with static member inline instance (_:Num.Signum     , r:Ratio<_>, _) = fun () -> (signum (numerator r)) </ratio/> G1()
  +    type Ratio<'RA> with static member inline instance (_:Num.FromInteger, _:Ratio<_>) = fun (x:bigint) -> Inline.instance Num.FromInteger x </ratio/> G1()
  +    type Ratio<'RA> with static member inline instance (_:Num.Negate     , r:Ratio<_>, _) = fun () -> -(numerator r) </ratio/> (denominator r)
   
   type Rational = Ratio.Ratio<bigint>
   
  
positive.code:         static member        instance (Negate, x:uint64    , _) = fun () -> 0UL - x
          static member        instance (Negate, x:unativeint, _) = fun () -> 0un - x
  
      let inline internal opPlus     (a:'Num) (b:'Num) :'Num = a + b
      let inline internal opMinus    (a:'Num) (b:'Num) :'Num = a - b
      let inline internal opMultiply (a:'Num) (b:'Num) :'Num = a * b
  
  
  // Integral class ---------------------------------------------------------
  
negative.code: // RealFrac class ---------------------------------------------------------
  module RealFrac =
      type ProperFraction = ProperFraction with
          static member        instance (ProperFraction, x:float   , _) = fun () -> let t = truncate x in (bigint (decimal t), x -. t)
          static member        instance (ProperFraction, x:float32 , _) = fun () -> let t = truncate x in (bigint (decimal t), x -. t)
          static member        instance (ProperFraction, x:decimal , _) = fun () -> let t = truncate x in (bigint          t , x -. t)
          static member inline instance (ProperFraction, r:Ratio<_>, _) = fun () -> 
              let (a,b) = (numerator r, denominator r)
              let (i,f) = quotRem a b
  