Quite simply:
x -= (t = u/(1.-0.5*MIN(1.,u*(a1/x - b1/(1.-x)))));
| | \_____________________________________/|
| | Calculate this monstrosity |
| \_________________________________________/|
| Assign it to t |
\________________________________________________/
Subtract that from x
In C (and C-like languages) the "result" of an assignment can be used for other things. So, for example:
x = (a = a - 1); // decrements a and assigns that to x as well
x += (a = 1 - a); // toggles a between 1 and 0 and adds to x (x increases
// every second time).
The relevant bit of the C standard is C11, 6.5.16 Assignment operators, paras 2 and 3
:
2/ An assignment operator shall have a modifiable lvalue as its left operand.
3/ An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment, but is not an lvalue. The type of an assignment expression is the type of the left operand unless the left operand has qualified type, in which case it is the unqualified version of the type of the left operand. The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands. The evaluations of the operands are unsequenced.