user: Please show me the C implementation that matches the assembly code listed below:

```asm
<run_boolean_compound_tests>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  lea    D129(%rip),%rdi
  call   <puts@plt>
  lea    D940(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbx,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  mov    $0x1,%ebx
  test   %eax,%eax
  jg     L227
L326:
  lea    D702(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L100
L309:
  lea    D1159(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L233
L159:
  lea    D1135(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L125
L373:
  lea    D336(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L250
L254:
  lea    D838(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L332
L212:
  lea    D607(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L237
L269:
  lea    D1023(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D693(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L365
L294:
  lea    D44(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D819(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L385
L276:
  lea    D1103(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L104
L173:
  lea    D35(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L241
L24:
  lea    D668(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L59
L37:
  lea    D462(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L54
L350:
  lea    D128(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L40
L76:
  lea    D587(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D400(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L155
L312:
  lea    D135(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L167
L174:
  lea    D1023(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D693(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L143
L75:
  lea    D44(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D819(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L23
L266:
  lea    D922(%rip),%rbp
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    %rbp,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D819(%rip),%xmm0
  subsd  0x8(%rsp),%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L72
  lea    D84(%rip),%r12
  mov    %r12,%rdi
  call   <parse_expression@plt>
  movq   %xmm0,%rbp
  mov    %r12,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D693(%rip),%xmm0
  movq   %rbp,%xmm6
  subsd  %xmm6,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L351
  test   %ebx,%ebx
  lea    D517(%rip),%rsi
  lea    D387(%rip),%rax
  cmove  %rax,%rsi
  jmp    L259
L227:
  pxor   %xmm0,%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L326
L100:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L309
L233:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L159
L125:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L373
L250:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L254
L332:
  pxor   %xmm0,%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L212
L237:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L269
L365:
  movsd  D693(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L294
L385:
  movsd  D819(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L276
L104:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L173
L241:
  pxor   %xmm0,%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L24
L59:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L37
L54:
  pxor   %xmm0,%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L350
L40:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L76
L155:
  movsd  D400(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L312
L167:
  pxor   %xmm0,%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L174
L143:
  movsd  D693(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L75
L23:
  movsd  D819(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L266
L72:
  movsd  D819(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D84(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_expression@plt>
  movq   %xmm0,%rbp
  mov    %rbx,%rsi
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D693(%rip),%xmm0
  movq   %rbp,%xmm7
  subsd  %xmm7,%xmm0
  call   <fabs@plt>
  lea    D387(%rip),%rsi
  test   %eax,%eax
  jle    L259
L351:
  movsd  D693(%rip),%xmm0
  lea    D945(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movq   %rbp,%xmm0
  lea    D376(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D387(%rip),%rsi
L259:
  lea    D934(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D129
type_guessed: string
name: unpack_data
arguments: data_label: D940
type_guessed: string
name: unpack_data
arguments: data_label: D392
type_guessed: string
name: unpack_data
arguments: data_label: D702
type_guessed: string
name: unpack_data
arguments: data_label: D400
type_guessed: f64
name: unpack_data
arguments: data_label: D1159
type_guessed: string
name: unpack_data
arguments: data_label: D1135
type_guessed: string
name: unpack_data
arguments: data_label: D336
type_guessed: string
name: unpack_data
arguments: data_label: D838
type_guessed: string
name: unpack_data
arguments: data_label: D607
type_guessed: string
name: unpack_data
arguments: data_label: D1023
type_guessed: string
name: unpack_data
arguments: data_label: D693
type_guessed: f64
name: unpack_data
arguments: data_label: D44
type_guessed: string
name: unpack_data
arguments: data_label: D819
type_guessed: f64
name: unpack_data
arguments: data_label: D1103
type_guessed: string
name: unpack_data
arguments: data_label: D35
type_guessed: string
name: unpack_data
arguments: data_label: D668
type_guessed: string
name: unpack_data
arguments: data_label: D462
type_guessed: string
name: unpack_data
arguments: data_label: D128
type_guessed: string
name: unpack_data
arguments: data_label: D587
type_guessed: string
name: unpack_data
arguments: data_label: D135
type_guessed: string
name: unpack_data
arguments: data_label: D922
type_guessed: string
name: unpack_data
arguments: data_label: D84
type_guessed: string
name: unpack_data
arguments: data_label: D517
type_guessed: string
name: unpack_data
arguments: data_label: D387
type_guessed: string
name: unpack_data
arguments: data_label: D945
type_guessed: string
name: unpack_data
arguments: data_label: D376
type_guessed: string
name: unpack_data
arguments: data_label: D934
type_guessed: string

tool: D129: Testing boolean expressions:

tool: D940: 2.0 > 3.0 && 2.0 == 2.0

tool: D392:   '%s'


tool: D702: 3.0 > 2.0 && 2.0 == 2.0

tool: D400: 1

tool: D1159: 3.0 > 2.0 || 1.0 == 0.0

tool: D1135: 3.0 < 2.0 || 1.0 != 0.0

tool: D336: 3.0 < 2.0 || 1.0 == 1.0 && 2.0 <= 3.0

tool: D838: 3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 0.0

tool: D607: 3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 1.0

tool: D1023: (3.0<2.0)*5.0 + (3.0>=2.0)*6.0

tool: D693: 6

tool: D44: (3.0>=2.0)*5.0 + (3.0<2.0)*6.0

tool: D819: 5

tool: D1103: !(2.0 > 3.0 && 2.0 == 2.0)

tool: D35: 3.0 > 2.0 && !(2.0 == 2.0)

tool: D668: 3.0 > !2.0 || 1.0 == 0.0

tool: D462: 3.0 < 2.0 || 1.0 != !0.0

tool: D128: !(3.0 < 2.0) || 1.0 == 1.0 && 2.0 <= 3.0

tool: D587: 3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || ! 0.0

tool: D135: 3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || !1.0

tool: D922: (1.0)*5.0 + (!1.0)*6.0

tool: D84: (!1.0)*5.0 + (1.0)*6.0

tool: D517: passed

tool: D387: failed

tool: D945:          C: %f


tool: D376:     Parsed: %f


tool: D934: %s



assistant: ```c
void run_boolean_compound_tests() {
  int result = 1;
  printf("Testing boolean expressions:\n");
  {
    double c_value, p_value;
    c_value = (double)2.0 > 3.0 && 2.0 == 2.0;
    p_value = parse_expression("2.0 > 3.0 && 2.0 == 2.0");
    printf("  '%s'\n", "2.0 > 3.0 && 2.0 == 2.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 > 2.0 && 2.0 == 2.0;
    p_value = parse_expression("3.0 > 2.0 && 2.0 == 2.0");
    printf("  '%s'\n", "3.0 > 2.0 && 2.0 == 2.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 > 2.0 || 1.0 == 0.0;
    p_value = parse_expression("3.0 > 2.0 || 1.0 == 0.0");
    printf("  '%s'\n", "3.0 > 2.0 || 1.0 == 0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != 0.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != 0.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != 0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 == 1.0 && 2.0 <= 3.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 == 1.0 && 2.0 <= 3.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 == 1.0 && 2.0 <= 3.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 0.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 0.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 1.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 1.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || 1.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(3.0 < 2.0) * 5.0 + (3.0 >= 2.0) * 6.0;
    p_value = parse_expression("(3.0<2.0)*5.0 + (3.0>=2.0)*6.0");
    printf("  '%s'\n", "(3.0<2.0)*5.0 + (3.0>=2.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(3.0 >= 2.0) * 5.0 + (3.0 < 2.0) * 6.0;
    p_value = parse_expression("(3.0>=2.0)*5.0 + (3.0<2.0)*6.0");
    printf("  '%s'\n", "(3.0>=2.0)*5.0 + (3.0<2.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)!(2.0 > 3.0 && 2.0 == 2.0);
    p_value = parse_expression("!(2.0 > 3.0 && 2.0 == 2.0)");
    printf("  '%s'\n", "!(2.0 > 3.0 && 2.0 == 2.0)");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 > 2.0 && !(2.0 == 2.0);
    p_value = parse_expression("3.0 > 2.0 && !(2.0 == 2.0)");
    printf("  '%s'\n", "3.0 > 2.0 && !(2.0 == 2.0)");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 > !2.0 || 1.0 == 0.0;
    p_value = parse_expression("3.0 > !2.0 || 1.0 == 0.0");
    printf("  '%s'\n", "3.0 > !2.0 || 1.0 == 0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != !0.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != !0.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != !0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)!(3.0 < 2.0) || 1.0 == 1.0 && 2.0 <= 3.0;
    p_value = parse_expression("!(3.0 < 2.0) || 1.0 == 1.0 && 2.0 <= 3.0");
    printf("  '%s'\n", "!(3.0 < 2.0) || 1.0 == 1.0 && 2.0 <= 3.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || !0.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || ! 0.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || ! 0.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || !1.0;
    p_value = parse_expression("3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || !1.0");
    printf("  '%s'\n", "3.0 < 2.0 || 1.0 != 1.0 && 2.0 <= 3.0 || !1.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(3.0 < 2.0) * 5.0 + (3.0 >= 2.0) * 6.0;
    p_value = parse_expression("(3.0<2.0)*5.0 + (3.0>=2.0)*6.0");
    printf("  '%s'\n", "(3.0<2.0)*5.0 + (3.0>=2.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(3.0 >= 2.0) * 5.0 + (3.0 < 2.0) * 6.0;
    p_value = parse_expression("(3.0>=2.0)*5.0 + (3.0<2.0)*6.0");
    printf("  '%s'\n", "(3.0>=2.0)*5.0 + (3.0<2.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(1.0) * 5.0 + (!1.0) * 6.0;
    p_value = parse_expression("(1.0)*5.0 + (!1.0)*6.0");
    printf("  '%s'\n", "(1.0)*5.0 + (!1.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  {
    double c_value, p_value;
    c_value = (double)(!1.0) * 5.0 + (1.0) * 6.0;
    p_value = parse_expression("(!1.0)*5.0 + (1.0)*6.0");
    printf("  '%s'\n", "(!1.0)*5.0 + (1.0)*6.0");
    if (fabs(c_value - p_value) > (1e-10)) {
      *&result = 0;
      printf("         C: %f\n", c_value);
      printf("    Parsed: %f\n", p_value);
    }
  };
  printf("%s\n\n", result ? "passed" : "failed");
}
```