# Mathematical Expressions

Of course OpenPPL supports arbitary complex mathematical expressions. As an example let us consider odds and outs.

// Calling according to odds and outs WHEN AmountToCall / (AmountToCall + PotSize) > Outs / CardsLeft Call FORCE

Off course this example is a bit simplistic. It does not consider other players in the pot, implied odds on future streets, the chance to semi-bluff, etc. But I think you get the point.

The following operators are supported:

## Equality Operators

Operator | Meaning | Example | Example explained |

= | equal | StillToAct = 2 | true, if you are on the button |

!= | not equal | Position != First | true, if you are not out of position |

< | smaller | AmountToCall < 5 | true, if there are less than 5 big blinds to call |

> | larger | PotSize > 20 | true, if the pot is larger than 20 big blinds |

<= | smaller or equal | AmountToCall <= 5 | true, if there are less than or equal to 5 big blinds to call |

>= | larger or equal | PotSize >= 20 | true, if the pot contains 20 or more big blinds |

## Logical Operators

The logical operators “and”, “or”, and “not” should be pretty self-explanatory.

Operator | Example |

Not | WHEN (HaveNothing AND OpponentsLeft >= 2 AND NOT BotIsLastRaiser) Check FORCE |

And | WHEN (BotIsLastRaiser AND OpponentsLeft = 1 AND Bets = 0 And ... BetHalfPot FORCE) |

XOr | Meaning: either or, which is true, if exactly one of the operands is true, but not both |

Or | WHEN (hand$AA OR hand$KK) RaiseMax FORCE |

Negation (Not) has highest priority of all operators, thereafter follow And, XOr and OR in decreasing order. So if you want to write an expression like

WHEN AmountToCall <= 4 AND (hand$22 OR hand$33...))

## Arithmetical Operators

OpenPPL also supports basic arithmetic. The usual rules apply of course. The percentage-operator has the same priority like multiplication and division, which is higher than addition, subtraction.

Operator | Meaning | Example |

+ | addition | |

- | subtraction | |

* | multiplication | |

/ | division | |

% | Percentage-operator | WHEN (AmountToCall <= 50% PotSize) Call FORCE |

Mod | Modulus-operator |

## Bitwise Operators (for Experts)

Furthermore OpenPPL supports bitwise operations that work on all single bits of bit-vectors or binary numbers simultaneously. They are useful for very low-level-stuff like detecting which chairs are seated with OpenHoldem’s bitwise symbols (playersseatedbits, playersdealtbits, etc.). Most players won’t ever need these symbols, so we will only give you a link to a good explanation here: http://en.wikipedia.org/wiki/Bitwise_operation

Operator |

BitAnd |

BitCount |

BitNot |

BitOr |

BitXOr |