# PCApplyBAorABTranspose#

Applies the transpose of the preconditioner and operator to a vector. That is, applies tr(B) * tr(A) with left preconditioning, NOT tr(B*A) = tr(A)*tr(B).

## Synopsis#

#include "petscksp.h"
PetscErrorCode PCApplyBAorABTranspose(PC pc, PCSide side, Vec x, Vec y, Vec work)


Collective

## Input Parameters#

• pc - the preconditioner context

• side - indicates the preconditioner side, one of PC_LEFT, PC_RIGHT, or PC_SYMMETRIC

• x - input vector

• work - work vector

## Output Parameter#

• y - output vector

## Note#

This routine is used internally so that the same Krylov code can be used to solve A x = b and A’ x = b, with a preconditioner defined by B’. This is why this has the funny form that it computes tr(B) * tr(A)

PC, PCApply(), PCApplyTranspose(), PCApplyBAorAB()