Level | Function | Storage requirement |

1 | basic three-term recurrences | |

2 | full biorthogonality | additional |

3 | semi-biorthogonality | additional |

4 | treat breakdown or cluster | no additional requirement |

To maintain full or semi-biorthogonality, it is necessary to store all computed Lanczos vectors and . The user must allocate memory for two rectangular arrays of dimension by for this purpose. If memory is limited, the best remedy is to restart as described in [207,110], but this is not available in the current version of ABLE.

Now, let us summarize the cost of floating point operations performed per Lanczos step. Lower order floating point operation costs are ignored. The following table is a summary of the different types of operations required in the implementation of ABLE.

Matrix- | m-inner | m-saxpy | m-scaling | ||

Function | m-vectors | product | QRD | ||

product | () | () | () | ||

Basic three-term | 2 | 6 | 8 | 2 | 2 |

fullbo |
|||||

semibo |
2 |

Additional floating point operations are required for the following occasional events:

- If the correction occurs at iteration to maintain
semi-biorthogonality, then this costs an additional
m-inner products and m-saxpy.
- If the procedure to adapt the block size to the larger clustering
of converged Ritz values (
*group*) and/or cure the breakdown (*treatbd*) is executed, then the cost increases by m-inner products and m-saxpy of multiple vectors. - If the Lanczos vectors in a block are
*rank deficient*, then the cost increases by m-inner products and m-saxpy for the TSMGS procedure. - It costs about to compute all eigentriplets
of the block-tridiagonal matrix .