diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/hyper/pages/numbers.ht | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/hyper/pages/numbers.ht')
-rw-r--r-- | src/hyper/pages/numbers.ht | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/src/hyper/pages/numbers.ht b/src/hyper/pages/numbers.ht new file mode 100644 index 00000000..ea0a8b55 --- /dev/null +++ b/src/hyper/pages/numbers.ht @@ -0,0 +1,321 @@ +% Copyright The Numerical Algorithms Group Limited 1991, 1992, 1993 +% Certain derivative-work portions Copyright (C) 1988 by Leslie Lamport. +% All rights reserved + +% Number page + +%------------------------------------------------------------------------- +\begin{page}{NumberPage}{\Language{} Number Types} +%------------------------------------------------------------------------- +\beginscroll +The following types of numbers are among those available in \Language{}. +\beginmenu + +\menulink{Integers}{IntegerPage}\tab{16} +Arithmetic with arbitrarily large integers. + +\menulink{Fractions}{FractionPage} \tab{16} +Rational numbers and general fractions. + +\menulink{Machine Floats}{DoubleFloatXmpPage} \tab{16} +Fixed precision machine floating-point. + +\menulink{Real Numbers}{FloatXmpPage} \tab{16} +Arbitrary precision decimal arithmetic. + +\menulink{Complex Numbers}{ComplexXmpPage} \tab{16} +Complex numbers in general. + +\menulink{Finite Fields}{ugProblemFinitePage} \tab{16} +Arithmetic in characteristic \spad{p}. +\endmenu +\horizontalline\newline +Additional Topics +\beginmenu + +\menulink{Numeric Functions}{ugProblemNumericPage} +\menulink{Cardinal Numbers}{CardinalNumberXmpPage} +\menulink{Machine-sized Integers}{SingleIntegerXmpPage} +\menulink{Roman Numerals}{RomanNumeralXmpPage} +\menulink{Continued Fractions}{ContinuedFractionXmpPage} +\menulink{Partial Fractions}{PartialFractionXmpPage} +\menulink{Quaternions}{QuaternionXmpPage} +\menulink{Octonions}{OctonionXmpPage} +\menulink{Repeating Decimals}{DecimalExpansionXmpPage} +\menulink{Repeating Binary Expansions}{BinaryExpansionXmpPage} +\menulink{Repeating Hexadecimal Expansions}{HexadecimalExpansionXmpPage} +\menulink{Expansions in other Bases}{RadixExpansionXmpPage} + +%\menulink{p-adic Numbers}{PAdicPage} +%\menulink{Algebraic Numbers}{AlgebraicNumberPage} +\endmenu + +\endscroll +\autobuttons +\end{page} + +% Fraction Page + +%------------------------------------------------------------------------- +\begin{page}{FractionPage}{Fractions} +%------------------------------------------------------------------------- + +\beginscroll +\Language{} handles fractions in many different contexts +and will automatically simplify fractions whenever possible. +Here are some examples: +\spadpaste{1/4 - 1/5} +\spadpaste{f := (x**2 + 1)/(x - 1) \bound{f}} +\spadpaste{g := (x**2 - 3*x + 2)/(x + 2) \bound{g}} +\spadpaste{f * g \free{f g}} +\endscroll +Additional Topics: +\beginmenu + +\menulink{Rational Numbers}{RationalNumberPage} \tab{18} +Quotients of integers + +\menulink{Quotient Fields}{FractionXmpPage} \tab{18} +Quotients over an arbitrary integral domain + +%\menulink{Localizations}{LocalizationPage} \tab{18} +%Fractions in the most general setting +\endmenu +\autobuttons +\end{page} + +%------------------------------------------------------------------------- +\begin{page}{RationalNumberPage}{Rational Numbers} +%------------------------------------------------------------------------- +\beginscroll +Like integers, rational numbers can be arbitrarily large. +For example: +\spadpaste{61657 ** 10 / 999983 ** 12} +Rational numbers will not be converted to decimals unless you explicitly +ask \Language{} to do so. +To convert a rational number to a decimal, use the function +\spadfun{numeric}. +Here's an example: +\spadpaste{x := 104348/33215 \bound{x}} +\spadpaste{numeric x \free{x}} +You can find the numerator and denominator of rational numbers using +the functions \spadfun{numer} and \spadfun{denom}, respectively. +\spadpaste{numer(x) \free{x}} +\spadpaste{denom(x) \free{x}} +To factor the numerator and denominator of a fraction, use the following +command: +\spadpaste{factor(numer x) / factor(denom x) \free{x}} +\endscroll +\autobuttons +\end{page} + +%\begin{page}{LocalizationPage}{Localizations} +%\beginscroll +%\endscroll +%\autobuttons + +% Algebraic Number Page + +%\begin{page}{AlgebraicNumberPage}{Algebraic Numbers} +%\beginscroll +%\endscroll +%\autobuttons + +% p-adic Number Page + +%\begin{page}{PAdicPage}{p-adic Numbers} +%\beginscroll +%\endscroll +%\autobuttons + +% Integer Page + +%------------------------------------------------------------------------- +\begin{page}{IntegerPage}{Integers} +%------------------------------------------------------------------------- + +\beginscroll +In \Language{}, integers can be as large as you like. +Try the following examples: +\spadpaste{x := factorial(200) \bound{x}} +\spadpaste{y := 2**90 - 1 \bound{y}} +Of course, you can now do arithmetic as usual on these (very) +large integers: +\spadpaste{x + y \free{x y}} +\spadpaste{x - y \free{x y}} +\spadpaste{x * y \free{x y}} +\Language{} can factor integers, but numbers with small prime factors +\spadpaste{factor(x) \free{x}} +will factor more rapidly than numbers with large prime factors. +\spadpaste{factor(y) \free{y}} +\horizontalline +Additional Topics +\beginmenu + +\menulink{General Info}{IntegerXmpPage} \tab{16} +General information and examples of integers. + +\menulink{Factorization}{ugxIntegerPrimesPage} \tab{16} +Primes and factorization. + +\menulink{Functions}{IntegerNumberTheoryFunctionsXmpPage} \tab{16} +Number theoretic functions. + +\menulink{Examples}{IntegerExamplePage} \tab{16} +Examples from number theory. + +\menulink{Problems}{IntegerProblemPage} \tab{16} +Problems from number theory. + +\endmenu +\endscroll +\autobuttons +\end{page} + +%\begin{page}{IntegerFactorizationPage}{Factorization of Integers} +%\beginscroll +%\endscroll +%\autobuttons + +%------------------------------------------------------------------------- +\begin{page}{IntegerExamplePage}{Examples} +%------------------------------------------------------------------------- +\beginscroll +One can show that if an integer of the form 2**k + 1 is prime, then +k must be a power of 2. +\downlink{Proof}{IntegerExampleProofPage} +\par +Pierre Fermat conjectured that every integer of the forn 2**(2**n) + 1 +is prime. +Let's look for a counterexample. +First define a function: +\spadpaste{f: NNI -> INT \bound{f1}} +\spadpaste{f(n) == 2**(2**n) + 1 \bound{f} \free{f1}} +Now try commands like: +\spadpaste{factor f(1) \free{f}} +\spadpaste{factor f(2) \free{f}} +until you find an integer of this form which is composite. +You can also try the following command: +\spadpaste{for n in 1..6 repeat output factor f(n) \free{f}} +Obviously, Fermat didn't have access to \Language{}! +\endscroll +\autobuttons +\end{page} + +%------------------------------------------------------------------------- +\begin{page}{IntegerExampleProofPage}{Proof} +%------------------------------------------------------------------------- + +\beginscroll +Proposition. If 2**k + 1 is prime, then k is a power of 2. +\newline +Proof. Suppose that k = m * n with m > 1 odd. Then +% +\centerline{2**n = -1 (mod (2**n + 1))} +\centerline{2**(n * m) = (-1)**m = -1 (mod (2**n + 1))} +\centerline{2**k + 1 = 0 (mod (2**n + 1))} +% +Therefore, 2**k + 1 is divisible by 2**n + 1. +Now 1 < 2**n + 1 and since m > 1, 2**n + 1 < 2**k + 1. +Hence, 2**k + 1 has a non-trivial factor. +\newline +QED +\endscroll +\autobuttons +\end{page} + +%------------------------------------------------------------------------- +\begin{page}{IntegerProblemPage}{Problems} +%------------------------------------------------------------------------- + +\beginscroll +One can show that if an integer of the form 2**k - 1 is prime, then +k must be prime. +\downlink{Proof}{IntegerProblemProofPage} +\newline +Problem \#1: Find the smallest prime p such that \spad{2**p - 1} is not prime. +\downlink{Answer}{IntegerProblemAnswerPage1} +\newline +Problem \#2: Find the smallest positive integer \spad{n} such that +\spad{n**2 - n + 41} isn't prime. +\downlink{Answer}{IntegerProblemAnswerPage2} +\endscroll +\autobuttons +\end{page} + + +%------------------------------------------------------------------------- +\begin{page}{IntegerProblemProofPage}{Proof} +%------------------------------------------------------------------------- +\beginscroll +Proposition. If \spad{2**k - 1} is prime, then \spad{k} is prime. +\newline +Proof. Suppose that k = m * n is a non-trivial factorization. +Then +% +\centerline{2**m = 1 (mod (2**m - 1))} +\centerline{2**(m * n) = 1 (mod (2**m - 1))} +\newline +and 2**m - 1 is a non-trivial factor of 2**k - 1. +\newline +QED +\endscroll +\autobuttons +\end{page} + +%------------------------------------------------------------------------- +\begin{page}{IntegerProblemAnswerPage1}{Solution to Problem \#1} +%------------------------------------------------------------------------- +\beginscroll +Problem \#1: Find the smallest prime p such that \spad{2**p - 1} +is not prime. +\newline +First, define a function: +\spadpaste{f: NNI -> INT \bound{f1}} +\spadpaste{f(n) == 2**n - 1 \bound{f} \free{f1}} +You can try factoring f(p) as p ranges through the set of primes. +For example, +\spadpaste{factor f(7) \free{f}} +This gets tedious after a while, so let's use \Language{}'s stream +facility. (A stream is essentially an infinite sequence.) +\newline +First, we create a stream consisting of the positive integers: +\spadpaste{ints := [n for n in 1..] \bound{ints}} +Now, we create a stream consisting of the primes: +\spadpaste{primes := [x for x in ints | prime? x] \bound{primes} \free{ints}} +Here's the 25th prime: +\spadpaste{primes.25 \free{primes}} +Next, create the stream of numbers of the form 2**p - 1 with p prime: +\spadpaste{numbers := [f(n) for n in primes] \bound{numbers} \free{primes f}} +Finally, form +the stream of factorizations of the elements of \spad{numbers}: +\spadpaste{factors := [factor n for n in numbers] \bound{factors} \free{numbers}} +You can see that the fifth number in the stream (2047 = 23*89) +is the first one that has a non-trivial factorization. +Since 2**11 = 2048, the solution to the problem is 11. +\newline +Here's another way to see that 2047 is the first number in the stream that +is composite: +\spadpaste{nums := [x for x in numbers | not prime? x] \bound{nums} \free{numbers}} +\endscroll +\autobuttons +\end{page} + +%------------------------------------------------------------------------- +\begin{page}{IntegerProblemAnswerPage2}{Solution to Problem \#2} +%------------------------------------------------------------------------- +\beginscroll +Problem \#2: Find the smallest positive integer n such that +\spad{n**2 - n + 41} is not prime. +\newline +When n = 41, n**2 - n + 41 = 41**2, which certainly isn't prime. +Let's see if any smaller integer works. +Here are the first 40 values: +\spadpaste{numbers := [n**2 - n + 41 for n in 0..40] \bound{numbers}} +Now have \Language{} factor the numbers on this list: +\spadpaste{[factor n for n in numbers] \free{numbers}} +You can see that 41 is the smallest positive integer n such that +n**n - n + 41 is not prime. +\endscroll +\autobuttons +\end{page} |