program main
  fn f64_zero_text() -> string
    call std.num.f64_to_string : string
      binary - : f64
        float 2.5 : f64
        float 2.5 : f64
  fn f64_fractional_text() -> string
    call std.num.f64_to_string : string
      binary / : f64
        float 7 : f64
        float 2 : f64
  fn f64_negative_text() -> string
    call std.num.f64_to_string : string
      binary - : f64
        float 2.5 : f64
        float 4 : f64
  fn f64_whole_text() -> string
    call std.num.f64_to_string : string
      binary + : f64
        float 7 : f64
        float 3 : f64
  fn main() -> i32
    call std.io.print_string : unit
      call f64_zero_text : string
    call std.io.print_string : unit
      call f64_fractional_text : string
    call std.io.print_string : unit
      call f64_negative_text : string
    call std.io.print_string : unit
      call f64_whole_text : string
    if : i32
      binary = : bool
        call std.string.len : i32
          call f64_fractional_text : string
        int 3 : i32
      int 0 : i32
      int 1 : i32
  test "f64 zero to string"
    binary = : bool
      call f64_zero_text : string
      string "0.0" : string
  test "f64 fractional to string"
    binary = : bool
      call f64_fractional_text : string
      string "3.5" : string
  test "f64 negative to string"
    binary = : bool
      call f64_negative_text : string
      string "-1.5" : string
  test "f64 whole to string"
    binary = : bool
      call f64_whole_text : string
      string "10.0" : string
  test "f64 negative string length"
    binary = : bool
      call std.string.len : i32
        call f64_negative_text : string
      int 4 : i32
  test "f64 whole string length"
    binary = : bool
      call std.string.len : i32
        call f64_whole_text : string
      int 4 : i32
