`AUTHOR`

- Dr. Alistair Ward
`DESCRIPTION`

- Exports a common interface for
*square-root*implementations. - Provides utilities for these implementations.

- class Algorithm algorithm where
- squareRootFrom :: Real operand => algorithm -> Estimate -> DecimalDigits -> operand -> Result
- squareRoot :: Real operand => algorithm -> DecimalDigits -> operand -> Result

- class Iterator algorithm where
- step :: Real operand => algorithm -> operand -> Result -> Result
- convergenceOrder :: algorithm -> ConvergenceOrder

- type Result = Rational
- type Estimate = (Result, DecimalDigits)
- getAccuracy :: Real operand => operand -> Result -> DecimalDigits
- getDiscrepancy :: Real operand => operand -> Result -> Result
- getEstimate :: Real operand => operand -> Estimate
- isPrecise :: Real operand => operand -> Result -> Bool

# Type-classes

class Algorithm algorithm whereSource

Defines the methods expected of a *square-root* algorithm.

:: Real operand | |

=> algorithm | |

-> Estimate | An initial estimate from which to start. |

-> DecimalDigits | The required precision. |

-> operand | The value for which to find the |

-> Result | Returns an improved estimate of the |

:: Real operand | |

=> algorithm | |

-> DecimalDigits | The required precision. |

-> operand | The value for which to find the |

-> Result | Returns an estimate of the |

class Iterator algorithm whereSource

The interface required to iterate, from an estimate of the required value, to the next approximation.

:: Real operand | |

=> algorithm | |

-> operand | The value for which the |

-> Result | The current estimate; |

-> Result | An improved estimate; |

:: algorithm | |

-> ConvergenceOrder | The ultimate ratio of successive terms as the iteration converges. |

# Types

## Type-synonyms

The result-type; actually, only the concrete return-type of `simplify`

, stops it being a polymorphic instance of `Fractional`

.

type Estimate = (Result, DecimalDigits)Source

Contains an estimate for the *square-root* of a value, and its accuracy.

# Functions

getAccuracy :: Real operand => operand -> Result -> DecimalDigitsSource

- For a given value and an estimate of its
*square-root*, returns the number of decimals digits to which the*square-root*is accurate; including the integral digits. - CAVEAT: the result returned for an exact match has been bodged.

getDiscrepancy :: Real operand => operand -> Result -> ResultSource

- The signed difference between the square of an estimate for the
*square-root*of a value, and that value. - Positive when the estimate is too low.
- CAVEAT: the magnitude is twice the error in the
*square-root*.

getEstimate :: Real operand => operand -> EstimateSource

Uses `Double`

-precision floating-point arithmetic, to obtain an initial estimate for the *square-root*, and its accuracy.