let size_apply_operation f sz1 sz2 = 
  let sz2p = size_to_same_unit sz1 sz2
  in
  match sz1,sz2p with
    TB f1, TB f2 -> TB ( f f1 f2 )
  | GB f1, GB f2 -> GB ( f f1 f2 )
  | MB f1, MB f2 -> MB ( f f1 f2 )
  | KB f1, KB f2 -> KB ( f f1 f2 )
  | B  f1, B  f2 -> B  ( f f1 f2 )
  |     _ ,    _ -> raise SizeInvalid