aboutsummaryrefslogtreecommitdiff
path: root/3.6.lyx
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan@mnpi.eu>2025-05-16 22:18:44 +0200
committerJuan Marín Noguera <juan@mnpi.eu>2025-05-16 22:18:44 +0200
commit4f670b750af5c11e1eac16d9cd8556455f89f46a (patch)
treee0f8d7b33df2727d89150f799ee8628821fda80a /3.6.lyx
parent16ccda6c459c0fd7ca2081e9d541124c28b0c556 (diff)
Changed layout for more manageable volumes
Diffstat (limited to '3.6.lyx')
-rw-r--r--3.6.lyx496
1 files changed, 0 insertions, 496 deletions
diff --git a/3.6.lyx b/3.6.lyx
deleted file mode 100644
index 8eaaa14..0000000
--- a/3.6.lyx
+++ /dev/null
@@ -1,496 +0,0 @@
-#LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 620
-\begin_document
-\begin_header
-\save_transient_properties true
-\origin unavailable
-\textclass book
-\begin_preamble
-\input defs
-\end_preamble
-\use_default_options true
-\maintain_unincluded_children no
-\language english
-\language_package default
-\inputencoding utf8
-\fontencoding auto
-\font_roman "default" "default"
-\font_sans "default" "default"
-\font_typewriter "default" "default"
-\font_math "auto" "auto"
-\font_default_family default
-\use_non_tex_fonts false
-\font_sc false
-\font_roman_osf false
-\font_sans_osf false
-\font_typewriter_osf false
-\font_sf_scale 100 100
-\font_tt_scale 100 100
-\use_microtype false
-\use_dash_ligatures true
-\graphics default
-\default_output_format default
-\output_sync 0
-\bibtex_command default
-\index_command default
-\float_placement class
-\float_alignment class
-\paperfontsize default
-\spacing single
-\use_hyperref false
-\papersize default
-\use_geometry false
-\use_package amsmath 1
-\use_package amssymb 1
-\use_package cancel 1
-\use_package esint 1
-\use_package mathdots 1
-\use_package mathtools 1
-\use_package mhchem 1
-\use_package stackrel 1
-\use_package stmaryrd 1
-\use_package undertilde 1
-\cite_engine basic
-\cite_engine_type default
-\biblio_style plain
-\use_bibtopic false
-\use_indices false
-\paperorientation portrait
-\suppress_date false
-\justification true
-\use_refstyle 1
-\use_formatted_ref 0
-\use_minted 0
-\use_lineno 0
-\index Index
-\shortcut idx
-\color #008000
-\end_index
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\paragraph_indentation default
-\is_math_indent 0
-\math_numbering_side default
-\quotes_style english
-\dynamic_quotes 0
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-\tablestyle default
-\tracking_changes false
-\output_changes false
-\change_bars false
-\postpone_fragile_content false
-\html_math_output 0
-\html_css_as_file 0
-\html_be_strict false
-\docbook_table_output 0
-\docbook_mathml_prefix 1
-\end_header
-
-\begin_body
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-rexerc2[15]
-\end_layout
-
-\end_inset
-
-some people have been afraid that computers will someday take over the world;
- but they are reassured by the statement that a machine cannot do anything really new,
- since it is only obeying the commands of its master,
- the programmer.
- Lady Lovelace wrote in 1844,
-
-\begin_inset Quotes eld
-\end_inset
-
-The Analytical Engine has no pretensions to
-\emph on
-originate
-\emph default
- anything.
- It can do
-\emph on
-whatever we know how to order it
-\emph default
- to perform.
-\begin_inset Quotes erd
-\end_inset
-
- Her statement has been elaborated further by many philosophers.
- Discuss this topic,
- with random number generators in mind.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-answer
-\end_layout
-
-\end_inset
-
-While it is true that a machine cannot do anything that a programmer doesn't tell it to do,
- there are a number of caveats here.
- First is that the programmer,
- or their boss,
- may not have other people's best interests in mind.
- Another one is that what the programmer tells the machine to do is not the same thing as what they
-\emph on
-expects
-\emph default
- them to do;
- the software may have bugs,
- although the bugs are unlikely to make the computer take over the world.
- Finally,
- if a random number generator is being used,
- the programmer is telling the machine to do one of a number of actions,
- chosen with some given distribution,
- without telling it which one to choose.
- These actions are typically limited to a given scope,
- and the programmer still controls the family of actions that the machine may take.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-rexerc11[M25]
-\end_layout
-
-\end_inset
-
-Assuming that floating point arithmetic on numbers of type
-\family typewriter
-double
-\family default
- is properly rounded in the sense of Section 4.2.2 (hence exact when the values are suitably restricted),
- convert the C routines
-\emph on
-ran_array
-\emph default
- and
-\emph on
-ran_start
-\emph default
- to similar programs that deliver double-precision random fractions in the range
-\begin_inset Formula $[0..1)$
-\end_inset
-
-,
- instead of 30-bit integers.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-answer
-\end_layout
-
-\end_inset
-
-Technically this does the work:
-\begin_inset listings
-lstparams "language=C,numbers=left,basicstyle={\small\sffamily},breaklines=true"
-inline false
-status open
-
-\begin_layout Plain Layout
-
-#include <math.h>
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-static double ran_u[KK];
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-void ranf_array(double out[],
- size_t n)
-\end_layout
-
-\begin_layout Plain Layout
-
-{
-\end_layout
-
-\begin_layout Plain Layout
-
- size_t i,
- j;
-\end_layout
-
-\begin_layout Plain Layout
-
- assert(n >= KK);
-\end_layout
-
-\begin_layout Plain Layout
-
- for (j = 0;
- j < KK;
- j++)
-\end_layout
-
-\begin_layout Plain Layout
-
- out[j] = ran_u[j];
-\end_layout
-
-\begin_layout Plain Layout
-
- for (;
- j < n;
- j++)
-\end_layout
-
-\begin_layout Plain Layout
-
- out[j] = fmod(1.
- + out[j-KK] - out[j-LL],
- 1.);
-\end_layout
-
-\begin_layout Plain Layout
-
- for (i = 0;
- i < LL;
- i++,
- j++)
-\end_layout
-
-\begin_layout Plain Layout
-
- ran_u[i] = fmod(1.
- + out[j-KK] - out[j-LL],
- 1.);
-\end_layout
-
-\begin_layout Plain Layout
-
- for (;
- i < KK;
- i++,
- j++)
-\end_layout
-
-\begin_layout Plain Layout
-
- ran_u[i] = fmod(1.
- + out[j-KK] - ran_x[j-LL],
- 1.);
-\end_layout
-
-\begin_layout Plain Layout
-
-}
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-void ranf_start(long seed)
-\end_layout
-
-\begin_layout Plain Layout
-
-{
-\end_layout
-
-\begin_layout Plain Layout
-
- ranf_start(seed);
-\end_layout
-
-\begin_layout Plain Layout
-
- for (size_t i = 0;
- i < KK;
- i++)
-\end_layout
-
-\begin_layout Plain Layout
-
- ran_u[i] = (double)ran_x[i] / MM;
-\end_layout
-
-\begin_layout Plain Layout
-
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-rexerc12[M21]
-\end_layout
-
-\end_inset
-
-What random number generator would be suitable for a minicomputer that does arithmetic only on integers in the range
-\begin_inset Formula $[-32768..32767]$
-\end_inset
-
-?
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-answer
-\end_layout
-
-\end_inset
-
-We could use one of the generators with very large moduli from exercise 3.2.1.1–14.
- We could also use running generators like the one in the text
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-rexerc15[25]
-\end_layout
-
-\end_inset
-
-Write C code that makes it convenient to generate the random integers obtained from
-\emph on
-ran_array
-\emph default
- by discarding all but the first 100 of every 1009 elements,
- as recommended in the text.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-answer
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-lstparams "language=C,numbers=left,basicstyle={\normalsize\sffamily},breaklines=true"
-inline false
-status open
-
-\begin_layout Plain Layout
-
-long next()
-\end_layout
-
-\begin_layout Plain Layout
-
-{
-\end_layout
-
-\begin_layout Plain Layout
-
- static long buf[1009],
- next = 100;
-\end_layout
-
-\begin_layout Plain Layout
-
- if (next == 100) {
-\end_layout
-
-\begin_layout Plain Layout
-
- ran_array(buf,
- sizeof(buf) / sizeof(buf[0]));
-\end_layout
-
-\begin_layout Plain Layout
-
- next = 0;
-\end_layout
-
-\begin_layout Plain Layout
-
- }
-\end_layout
-
-\begin_layout Plain Layout
-
- return buf[next++];
-\end_layout
-
-\begin_layout Plain Layout
-
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_body
-\end_document