user: Converte this assembly snippet into its equivalent C code:

```asm
<run_boolean_compound_tests>:
  endbr64
  push   %r15
  lea    D283(%rip),%rdi
  push   %r14
  push   %r13
  push   %r12
  mov    $0x1,%r12d
  push   %rbp
  lea    D722(%rip),%rbp
  sub    $0x10,%rsp
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <parse_expression@plt>
  mov    %rbp,%rsi
  lea    D273(%rip),%rbp
  xor    %eax,%eax
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  pxor   %xmm1,%xmm1
  subsd  0x8(%rsp),%xmm1
  movapd %xmm1,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L104
  lea    D498(%rip),%r13
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  mov    %r13,%rdi
  lea    D798(%rip),%r12
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L104:
  lea    D149(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L215
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L215:
  lea    D412(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm3
  subsd  0x8(%rsp),%xmm3
  movapd %xmm3,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L133
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L133:
  lea    D572(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm4
  subsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L137
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L137:
  lea    D854(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm5
  subsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L130
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L130:
  lea    D789(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  pxor   %xmm6,%xmm6
  subsd  0x8(%rsp),%xmm6
  movapd %xmm6,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L110
  lea    D498(%rip),%r13
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  mov    %r13,%rdi
  lea    D798(%rip),%r12
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L110:
  lea    D862(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm7
  subsd  0x8(%rsp),%xmm7
  movapd %xmm7,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L103
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L103:
  lea    D902(%rip),%r15
  mov    %r15,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r15,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D720(%rip),%xmm1
  subsd  0x8(%rsp),%xmm1
  movapd %xmm1,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L16
  mov    D720(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L16:
  lea    D511(%rip),%r14
  mov    %r14,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r14,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D365(%rip),%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L58
  mov    D365(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L58:
  lea    D230(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm3
  subsd  0x8(%rsp),%xmm3
  movapd %xmm3,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L2
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L2:
  lea    D661(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  pxor   %xmm4,%xmm4
  subsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L115
  lea    D498(%rip),%r13
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  mov    %r13,%rdi
  lea    D798(%rip),%r12
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L115:
  lea    D612(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm5
  subsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L222
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L222:
  lea    D459(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  pxor   %xmm6,%xmm6
  subsd  0x8(%rsp),%xmm6
  movapd %xmm6,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L92
  lea    D498(%rip),%r13
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  mov    %r13,%rdi
  lea    D798(%rip),%r12
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L92:
  lea    D745(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm7
  subsd  0x8(%rsp),%xmm7
  movapd %xmm7,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L203
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L203:
  lea    D688(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D534(%rip),%xmm1
  subsd  0x8(%rsp),%xmm1
  movapd %xmm1,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L205
  mov    D534(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L205:
  lea    D246(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  pxor   %xmm2,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L232
  lea    D498(%rip),%r13
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  mov    %r13,%rdi
  lea    D798(%rip),%r12
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L232:
  mov    %r15,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r15,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D720(%rip),%xmm3
  subsd  0x8(%rsp),%xmm3
  movapd %xmm3,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L221
  mov    D720(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L221:
  mov    %r14,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r14,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D365(%rip),%xmm4
  subsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jle    L37
  mov    D365(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  xor    %r12d,%r12d
  call   <printf@plt>
L37:
  lea    D958(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D365(%rip),%xmm5
  subsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L95
  lea    D452(%rip),%r13
  mov    %r13,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D720(%rip),%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L175
  lea    D183(%rip),%rsi
  test   %r12d,%r12d
  je     L193
L61:
  add    $0x10,%rsp
  lea    D312(%rip),%rdi
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <printf@plt>
  nopl   (%rax)
L175:
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
L129:
  mov    D720(%rip),%rax
  mov    %r13,%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D489(%rip),%rsi
  jmp    L61
  nopl   0x0(%rax,%rax,1)
L95:
  mov    D365(%rip),%rax
  lea    D498(%rip),%r13
  lea    D798(%rip),%r12
  mov    %r13,%rdi
  lea    D452(%rip),%r14
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    %r14,%rdi
  call   <parse_expression@plt>
  xor    %eax,%eax
  mov    %r14,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  D720(%rip),%xmm4
  subsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  call   <fabs@plt>
  test   %eax,%eax
  jg     L129
L193:
  lea    D489(%rip),%rsi
  jmp    L61
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D283
data_type: string
name: extract_symbolic_data
arguments: data_tag: D722
data_type: string
name: extract_symbolic_data
arguments: data_tag: D273
data_type: string
name: extract_symbolic_data
arguments: data_tag: D498
data_type: string
name: extract_symbolic_data
arguments: data_tag: D798
data_type: string
name: extract_symbolic_data
arguments: data_tag: D149
data_type: string
name: extract_symbolic_data
arguments: data_tag: D534
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D412
data_type: string
name: extract_symbolic_data
arguments: data_tag: D572
data_type: string
name: extract_symbolic_data
arguments: data_tag: D854
data_type: string
name: extract_symbolic_data
arguments: data_tag: D789
data_type: string
name: extract_symbolic_data
arguments: data_tag: D862
data_type: string
name: extract_symbolic_data
arguments: data_tag: D902
data_type: string
name: extract_symbolic_data
arguments: data_tag: D720
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D511
data_type: string
name: extract_symbolic_data
arguments: data_tag: D365
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D230
data_type: string
name: extract_symbolic_data
arguments: data_tag: D661
data_type: string
name: extract_symbolic_data
arguments: data_tag: D612
data_type: string
name: extract_symbolic_data
arguments: data_tag: D459
data_type: string
name: extract_symbolic_data
arguments: data_tag: D745
data_type: string
name: extract_symbolic_data
arguments: data_tag: D688
data_type: string
name: extract_symbolic_data
arguments: data_tag: D246
data_type: string
name: extract_symbolic_data
arguments: data_tag: D958
data_type: string
name: extract_symbolic_data
arguments: data_tag: D452
data_type: string
name: extract_symbolic_data
arguments: data_tag: D183
data_type: string
name: extract_symbolic_data
arguments: data_tag: D312
data_type: string
name: extract_symbolic_data
arguments: data_tag: D489
data_type: string

tool: D283: Testing boolean expressions:

tool: D722: 2.0 > 3.0 && 2.0 == 2.0

tool: D273:   '%s'


tool: D498:          C: %f


tool: D798:     Parsed: %f


tool: D149: 3.0 > 2.0 && 2.0 == 2.0

tool: D534: 1

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

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

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

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

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

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

tool: D720: 6

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

tool: D365: 5

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

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

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

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

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

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

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

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

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

tool: D183: passed

tool: D312: %s



tool: D489: failed

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");
}
```