BUILT-IN MATHEMATICA SYMBOL

# NestWhile

NestWhile[f, expr, test]
starts with expr, then repeatedly applies f until applying test to the result no longer yields True.

NestWhile[f, expr, test, m]
supplies the most recent m results as arguments for test at each step.

NestWhile[f, expr, test, All]
supplies all results so far as arguments for test at each step.

NestWhile[f, expr, test, m, max]
applies f at most max times.

NestWhile[f, expr, test, m, max, n]
applies f an extra n times.

NestWhile[f, expr, test, m, max, -n]
returns the result found when f had been applied n fewer times.

## DetailsDetails

• NestWhile[f, expr, test] returns the first expression to which applying test does not yield True.
• If does not yield True, NestWhile[f, expr, test] returns expr. »
• NestWhile[f, expr, test, m] at each step evaluates . It does not put the results in a list. »
• The are given in the order they are generated, with the most recent coming last.
• NestWhile[f, expr, test, m] does not start applying test until at least m results have been generated.
• NestWhile[f, expr, test, {mmin, m}] does not start applying test until at least results have been generated. At each step it then supplies as arguments to test as many recent results as possible, up to a maximum of m. »
• NestWhile[f, expr, test, m] is equivalent to NestWhile[f, expr, test, {m, m}]. »
• NestWhile[f, expr, UnsameQ, 2] is equivalent to FixedPoint[f, expr]. »
• NestWhile[f, expr, test, All] is equivalent to NestWhile[f, expr, test, {1, Infinity}]. »
• NestWhile[f, expr, UnsameQ, All] goes on applying f until the same result first appears more than once.
• NestWhile[f, expr, test, m, max, n] applies f an additional n times after test fails, or max applications have already been performed. »
• NestWhile[f, expr, test, m, max, -n] is equivalent to Part[NestWhileList[f, expr, test, m, max], -n-1]. »
• NestWhile[f, expr, test, m, Infinity, -1] returns, if possible, the last expression in the sequence expr, , , ... for which test yields True.

## ExamplesExamplesopen allclose all

### Basic Examples (2)Basic Examples (2)

Keep dividing by 2 until the result is no longer an even number:

 Out[1]=

Iterate taking logarithms until the result is no longer positive:

 Out[1]=