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 |