# Logic Functions

In addition to the normal boolean operators we use (such as
or, `||`, and, `&&` and negation, `!`) there are also a number of additional
operators that might be of interest.

## Task

In this problem, your task is to write C++ functions that
implement a few of them. You will give the output not as a
return value, but instead update variables that are passed into
your functions as *references*.

The functions you are to implement are described using truth tables, i.e. an exhaustive list of what the output should be for each input:

### The exclusive or

Also abbreviated `xor`, with the
mathematical notation $x \mathbin
{\oplus } y$.

$x$ |
$y$ |
$x \mathbin {\oplus } y$ |

$T$ |
$T$ |
$F$ |

$T$ |
$F$ |
$T$ |

$F$ |
$T$ |
$T$ |

$F$ |
$F$ |
$F$ |

### The implication

Given the notation $x \rightarrow y$.

$x$ |
$y$ |
$x \rightarrow y$ |

$T$ |
$T$ |
$T$ |

$T$ |
$F$ |
$F$ |

$F$ |
$T$ |
$T$ |

$F$ |
$F$ |
$T$ |

### The equivalence

Given the notation $x \leftrightarrow y$.

$x$ |
$y$ |
$x \leftrightarrow y$ |

$T$ |
$T$ |
$T$ |

$T$ |
$F$ |
$F$ |

$F$ |
$T$ |
$F$ |

$F$ |
$F$ |
$T$ |

### Template

You can download the template `logicfunctions.cpp` from the Attachments menu to
implement your functions. When submitting your solution,
*only send in this file*.

### Testing

First, download the file `logicfunctions.h` from the Attachments menu and
save it in the same place as your solution. That file calls
your program with a fixed test case and reports whether it was
correct.