let of_string_exn s' =
  let s = String.uppercase s' in
    try ignore (arabic s); s
    with BadNumeral c -> raise_bad (sprintf "roman numeral %s contains illegal character %c" s' c)