The Standard Mathematicalmodule is an original implementation of various mathematical facilities. The module can be divided into several catgeories which include convenient functions, linear algebra and real analysis.
**Random number services**

The mathmodule provides various functions that generate random numbers in different formats.

Function | Description |

get-random-integer | return a random integer number |

get-random-real | return a random real number between 0.0 and 1.0 |

get-random-relatif | return a random relatif number |

get-random-prime | return a random probable prime relatif number |

The numbers are generated with the help of the system random generator. Such generator is machine dependant and results can vary from one machine to another.

**Primality testing services**

The mathmodule provides various predicates that test a number for a primality condition. Most of these predicates are intricate and are normally not used except the prime-probable-ppredicate.

Predicate | Description |

fermat-p | Fermat test predicate |

miller-rabin-p | Miller-Rabin test predicate |

prime-probable-p | general purpose prime probable test |

get-random-prime | return a random probable prime relatif number |

The fermat-pand miller-rabin-ppredicates return true if the primality condition is verified. These predicate operate with a base number. The prime number to test is the second argument.

*Fermat primality testing*

The fermat-ppredicate is a simple primality test based on the "little Fermat theorem". A base number greater than 1 and less than the number to test must be given to run the test.

afnix:mth:fermat-p 2 7

In the preceeding example, the number 7 is tested, and the fermat-ppredicate returns true. If a number is prime, it is guaranted to pass the test. The oppositte is not true. For example, 561 is a composite number, but the Fermat test will succeed with the base 2. Numbers that successfully pass the Fermat test but which are composite are called Carmichael numbers. For those numbers, a better test needs to be employed, such like the Miller-Rabin test.

*Miller-Rabin primality testing*

The miller-rabin-ppredicate is a complex primality test that is more efficient in detecting prime number at the cost of a longer computation. A base number greater than 1 and less than the number to test must be given to run the test.

afnix:mth:miller-rabin-p 2 561

In the preceeding example, the number 561, which is a Carmichael number, is tested, and the miller-rabin-ppredicate returns false. The probability that a number is prime depends on the number of times the test is ran. Numerous studies have been made to determine the optimal number of passes that are needed to declare that a number is prime with a good probability. The prime-probable-ppredicate takes care to run the optimal number of passes.

*General primality testing*

The prime-probable-ppredicate is a complex primality test that incorporates various primality tests. To make the story short, the prime candidate is first tested with a series of small prime numbers. Then a fast Fermat test is executed. Finally, a series of Miller-Rabin tests are executed. Unlike the other primality tests, this predicate operates with a number only and optionally, the number of test passes. This predicate is the recommended test for the folks who want to test their numbers.

afnix:mth:prime-probable-p 17863