Safe Haskell | Safe-Inferred |
---|---|

Language | Haskell98 |

`AUTHOR`

- Dr. Alistair Ward
`DESCRIPTION`

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

- class Algorithmic algorithm where
- squareRootFrom :: (Real operand, Show operand) => algorithm -> Estimate -> DecimalDigits -> operand -> Result
- squareRoot :: (Real operand, Show 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, Show operand) => operand -> Estimate
- isPrecise :: Real operand => operand -> Result -> Bool

# Type-classes

class Algorithmic algorithm where Source

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

:: (Real operand, Show 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, Show operand) | |

=> algorithm | |

-> DecimalDigits | The required precision. |

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

-> Result | Returns an estimate of the |

class Iterator algorithm where Source

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 -> DecimalDigits Source

- 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 -> Result Source

- 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, Show operand) => operand -> Estimate Source

Uses `Double`

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