-``A PDF file should be thought of as a flattened representation of a data structure
-consisting of a collection of objects that can refer to each other in any arbitrary
-way.''
-
-The PDF 1.7 standard describes a format which is \rephrase{essentially PostScript plus everything in the kitchen sink}.
-\begin{itemize}
- \item PDF is not just crippled postscript
- \item Objects - has a type system, like a programming language, not like the DOM where all objects are fundamentally the same - this is similar to PostScript
- \item File structure - Header, body, reference table (location of objects in file), trailer (location of reference table and special objects)
- \begin{itemize}
- \item Read the file from the end
- \item File can be updated incrementally as long as the trailer is at the end
- \end{itemize}
- \item Document structure - This is basically a graph, wheras the DOM is a tree
- \item Content streams - objects but conceptually different - operators or instructions
- \item Interactivity --- At this point, PDF suddenly changes from being PostScript to being XML
- \begin{itemize}
- \item
- \end{itemize}
-\end{itemize}
-
-The biggest difference between the PDF design philosophy and the HTML5 philosophy is the emphasis in PDF on the actual file format.
-This means PDF is more complicated but also more efficient (at least, we would hope so).
-
-
-\subsection{Scientific Computation Packages}
-
-The document and the code that produces it are one and the same.
-
-\begin{itemize}
- \item Numerical computation packages such as Mathematica and Maple use arbitrary precision floats
- \begin{itemize}
- \item Mathematica is not open source which is an issue when publishing scientific research (because people who do not fork out money for Mathematica cannot verify results)
- \item What about Maple? \cite{HFP} and \cite{fousse2007mpfr} both mention it being buggy.
- \item Octave and Matlab use fixed precision doubles
- \end{itemize}
- \item IPython is pretty cool guys
-\end{itemize}
-
-\section{Precision in Modern Document Formats}
-
-We briefly summarise the requirements of the standards discussed so far in regards to the precision of mathematical operations:
-\begin{itemize}
- \item {\bf PostScript} predates the IEEE-754 standard and originally specified a floating point representation with ? bits of exponent and ? bits of mantissa. Version ? of the PostScript standard changed to specify IEEE-754 binary32 ``single precision'' floats.
- \item {\bf PDF} has also specified IEEE-754 binary32 since version ?. Importantly, the standard states that this is a \emph{maximum} precision; documents created with higher precision would not be viewable in Adobe Reader.
- \item {\bf SVG} specifies a minimum of IEEE-754 binary32 but recommends more bits be used internally
- \item {\bf Javascript} uses binary32 floats for all operations, and does not distinguish between integers and floats.
- \item {\bf Python} uses binary64 floats
- \item {\bf Matlab} uses binary64 floats
- \item {\bf Mathematica} uses some kind of terrifying symbolic / arbitrary float combination
- \item {\bf Maple} is similar but by many accounts horribly broken
-
-\end{itemize}