:orphan:
# TaoLineSearchApply
Performs a line-search in a given step direction. Criteria for acceptable step length depends on the line-search algorithm chosen
## Synopsis
```
#include "petsctaolinesearch.h"
PetscErrorCode TaoLineSearchApply(TaoLineSearch ls, Vec x, PetscReal *f, Vec g, Vec s, PetscReal *steplength, TaoLineSearchConvergedReason *reason)
```
Collective
## Input Parameters
- ***ls -*** the `TaoLineSearch` context
- ***s -*** search direction
## Output Parameters
- ***x -*** On input the current solution, on output `x` contains the new solution determined by the line search
- ***f -*** On input the objective function value at current solution, on output contains the objective function value at new solution
- ***g -*** On input the gradient evaluated at `x`, on output contains the gradient at new solution
- ***steplength -*** scalar multiplier of s used ( x = x0 + steplength * x)
- ***reason -*** `TaoLineSearchConvergedReason` reason why the line-search stopped
## Notes
The algorithm developer must set up the `TaoLineSearch` with calls to
`TaoLineSearchSetObjectiveRoutine()` and `TaoLineSearchSetGradientRoutine()`,
`TaoLineSearchSetObjectiveAndGradientRoutine()`, or `TaoLineSearchUseTaoRoutines()`.
The latter is done automatically by default and thus requires no user input.
You may or may not need to follow this with a call to
`TaoAddLineSearchCounts()`, depending on whether you want these
evaluations to count toward the total function/gradient evaluations.
## See Also
[](ch_tao), `Tao`, `TaoLineSearchConvergedReason`, `TaoLineSearch`, `TaoLineSearchCreate()`, `TaoLineSearchSetType()`,
`TaoLineSearchSetInitialStepLength()`, `TaoAddLineSearchCounts()`
## Level
advanced
## Location
src/tao/linesearch/interface/taolinesearch.c
## Implementations
TaoLineSearchApply_Armijo in src/tao/linesearch/impls/armijo/armijo.c
TaoLineSearchApply_GPCG in src/tao/linesearch/impls/gpcglinesearch/gpcglinesearch.c
TaoLineSearchApply_MT in src/tao/linesearch/impls/morethuente/morethuente.c
TaoLineSearchApply_OWArmijo in src/tao/linesearch/impls/owarmijo/owarmijo.c
TaoLineSearchApply_Unit in src/tao/linesearch/impls/unit/unit.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/tao/linesearch/interface/taolinesearch.c)
[Index of all TaoLineSearch routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)