Snippets

Spread the love

Below a quick reference for various useful code snippets…

  1. Forth
  2. LaTeX
  3. HTML

Forth snippets

Forth has many dialects. I use GForth for general purpose Forth, as it is available for both Linux and Windows (including Win8) and has a floating point stack which is convenient for scientific programming. I use Win32Forth for its Win32 facilities and easy integration with assembly language. I use F-PC for its simple design and compatibility with 16-bit i-x86 assembly language, though it needs to run in a 16-bit emulator such as DosBox.

Floating Point

\ extra stack operations
: f2dup ( fa fb -- fa fb fa fb ) fover fover ;
: funder ( fa fb -- fb fa fb ) fswap fover ;

\ useful scaffolding within loops
: fshowstack ( -- ) cr f.s key drop ;
: fshowtop ( -- ) cr fdup f. ;

\ float ops
: f2* ( fa -- 2fa ) fdup f+ ;
: f^2 ( fa -- fa^2 ) fdup f* ;

\ float equality
: feps 1e-12 ; \ proxy for machine epsilon
: f=eps ( fa fb -- bool ) f- fabs feps f< ; \ true if fa and fb within neighborhood of feps


LaTeX snippets

Downloadable Templates
Packages
  1. \usepackage{amsfonts} allows $\mathbb{R}$ for reals, $\mathbb{Z}$ for integers, $\mathbb{R}^n$ for n-dim. spaces.
  2. \usepackage{amsmath} gives \eqref, \binom, \eqrefm, and more
  3. \usepackage{amssymb} gives full AMS mathematics symbology
  4. \usepackage{graphicx} allows incorporating images. EPS format is required though; png2eps is a useful conversion utility.
    graphicx Reference
    Example: \includegraphics[scale=0.4]{file}

  5. \usepackage[pass]{geometry} allows changing margins within the document
Whitespace and Margins
  1. \newgeometry{top=2.5cm,bottom=2.3cm,left=2.5cm,right=2.3cm}

What is the right text block size for comfortable reading? Conventional guidance is 60 characters per line, 80 characters upper limit. Yet 90-100 characters is comfortable for technical material. The 'right' number probably depends on content type (fiction, news, technical, mathematics) and reader experience. For example, experienced mathematicians either skim headings, formulas, theorems, figures or carefully read every word in a subsection of interest. In the first case, having more on the page (vertical compression) is a benefit: fewer pages to turn, easier to refer to previous statements. In the second case, the reading is deliberate enough that slightly longer lines don't matter; they are not long enough to cause 'doubling' (accidentally reading the same line twice).

Text Format

Verbatim / Code Formatting

  1. \texttt{sqrt} for verbatim style on a phrase
  2. for verbatim code block, using a smaller font size:
    {\footnotesize\begin{verbatim}
    : f2dup ( fa fb -- fa fb fa fb ) fover fover ;
    : funder ( fa fb -- fb fa fb ) fswap fover ;
    \end{verbatim}
    }
Referring to Labelled / Numbered blocks
  1. \begin{lemma} your lemma name here \label{theorem_trivial}\end{lemma}
    your lemma text here
    sets label

  2. \ref{theorem_trivial} refers to named label internal numbering.
  3. \pageref{theorem_trivial} refers to named label page number.
  4. Note run LaTeX twice to get refs correct.
  5. \begin{equation} formula_text \label{labelname}\end{equation} numbers equations and sets reference.
  6. Equation \eqref{labelname} refers to labelled equation's number
Equations
  1. Text inside math equations: $\epsilon_{\text{machine}}$
  2. Numbered equations: \begin{equation} formula_text \label{labelname}\end{equation} numbers equations and sets reference.
  3. Multi-line numbered equations : \begin{align} line 1 ... \\
    line 2 ... \end{align}

    1. use \nonumber to suppress line numbers
    2. end a line with \\
    3. use align* to suppress all line numbers
    4. use & to align at a character
  4. Cases:
    \begin{equation}
    x_{ij} =
    \begin{cases}
    0& \text{if $i \neq j$},\\
    1& \text{if i=j}.
    \end{cases}
    \end{equation}

  5. Stacked Text, e.g. for limits
    \lim{x \to 2} or usepackage{mathtools} and then \substack{first line\\second line\\third line}
Figures and Captions
  1. Utility for converting PNG to EPS (zip)
  2. Captioning a figure Reference
    Caption is placed in the same position before/after graphic
    \begin{figure}[h!]
    \includegraphics[scale=0.3]{sqrt_xls_2} % Excel hand calc
    \caption{Variation suitable for hand calculation.}
    \label{fig:sqrt_xls_2_hand}
    \end{figure}

  3. Referring to labelled figure label reference
    Figure \ref{sqrt_xls_2_hand}

  4. Text wrapping a figure (wraps the text below it)
    \begin{wrapfigure}{R}{0.75\textwidth}
    \centering
    \includegraphics[width=0.75\textwidth]{sqrt_xls_1_sqrt2}
    \caption{\label{fig:sqrt2} Calculate $\sqrt{2}$}
    \end{wrapfigure}
Useful Macro Commands
  1. Already defined: \lim, \sin, \min, \arctan, \to, etc.
  2. For analysis

    \newcommand{\dt}{\ensuremath{\text{d}t}} % for calculus dt symbol
    \newcommand{\diff}[1]{\ensuremath{\text{d#1}}} % for calculus dx, dy, dz, dt differential
    \newcommand{\qed}{\ensuremath{\ \ \blacksquare}} %for end of proof symbol
    \newcommand{\qedlt}{\ensuremath{\ \ \square}} %for end of proof symbol
    \newcommand{\eps}{\ensuremath{\epsilon}} %for easy use of epsilon
    \newcommand{\imply}{\rightarrow} % for => % Longrightarrow, etc.
    \newcommand{\limply}{\leftarrow} % for =>
    \newcommand{\bimply}{\leftrightarrow} % for <=>
    \newcommand{\st}{\ensuremath{\ \ \text{s.t.}\ \ }} % for easy use of s.t. (such that) in a formula
    \newcommand{\inv}{\ensuremath{^{-1}}} % for easy creation of f^{-1}, etc.

  3. For logic and set theory

    % MACRO for nice emptyset
    \let\oldemptyset\emptyset
    \let\emptyset\varnothing
    \newcommand{\dcup}{\ensuremath{\ \ \dot\cup \ \ }} % for disjoint union
    % \setminus instead of \backslash
    % TEXT words for logical operators
    \newcommand{\AND}{\ensuremath{\text{\begin{ttfamily}\small{ AND }\end{ttfamily}}}}
    \newcommand{\OR}{\ensuremath{\text{\begin{ttfamily}\small{ OR }\end{ttfamily}}}}
    \newcommand{\NOT}{\ensuremath{\text{\begin{ttfamily}\small{ NOT }\end{ttfamily}}}}
    \newcommand{\XOR}{\ensuremath{\text{\begin{ttfamily}\small{ XOR }\end{ttfamily}}}}
    \newcommand{\NAND}{\ensuremath{\text{\begin{ttfamily}\small{ NAND }\end{ttfamily}}}}
    \newcommand{\NOR}{\ensuremath{\text{\begin{ttfamily}\small{ NOR }\end{ttfamily}}}}
    \newcommand{\XNOR}{\ensuremath{\text{\begin{ttfamily}\small{ XNOR }\end{ttfamily}}}}
    \newcommand{\TRUE}{\ensuremath{\text{\begin{ttfamily}\small{ TRUE }\end{ttfamily}}}}
    \newcommand{\FALSE}{\ensuremath{\text{\begin{ttfamily}\small{ FALSE }\end{ttfamily}}}}
    \renewcommand{\neg}{\sim} % symbolic not defined now to use tilde ~ instead of ¬
    \newcommand{\eqdef}{\ensuremath{=_\text{\tiny def}}} % decorating = with `by definition'

  4. For variable decoration

    \let\oldforall\forall % old takes the former command
    \renewcommand{\forall}{\ \ \oldforall} % adds space before a logical operator
    \let\oldexists\exists % old takes the former command
    \renewcommand{\exists}{\ \ \oldexists} % adds space before a logical operator

    \renewcommand{\vec}[1]{\mathbf{#1}} % vectors are bold
    \newcommand{\pder}[2]{\frac{\partial#1}{\partial#2}} % for partial derivatives

    \let\oldhat\hat % oldhat takes on what hat formerly had
    \renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}} % hats make vectors bold and hatted vectors
    \newcommand{\overbar}[1]{\ensuremath{\overline{#1}}} % defines \overbar, which is more prominent than \bar and more convenient than overline
    \newcommand{\fuzzy}[1]{\ensuremath{ \underset{\sim}{#1} }} % usage: \fuzzy{A} for A under-tilde
    % \newcommand{\minimise}[1]{\ensuremath{\underset{#1}\min}} % usage: \minimise{x} for min over x NOT NEEDED \min_{ } already does this...
    \newcommand{\set}[1]{\ensuremath{ \{#1\}}} % usage: \set{x_i}_{i=1}^N

  5. For tildes

    \newcommand{\overtilde}[1]{\ensuremath{ \overset{\sim}{#1} }} % usage: \tilde{x} for x over-tilde
    % \newcommand{\approx}{\ensuremath{\sim}} % usage: \approx 3
    \newcommand{\abs}{\ensuremath{\text{abs}}} %for absolute value

  6. For probability AND statistics

    \newcommand{\pr}[1]{\ensuremath{\text{Pr}\{#1\}}} %for probability, e.g. Pr(X=k)
    \newcommand{\e}[1]{\ensuremath{\text{E}[#1]}} % expectation
    \newcommand{\var}[1]{\ensuremath{\text{var}[#1]}} %for variance
    \newcommand{\avg}{\ensuremath{\text{avg}}} %for avg
    \newcommand{\sd}{\ensuremath{\text{sd}}} %for standard deviation
    \newcommand{\cov}[2]{\ensuremath{\text{cov}(#1,#2)}} %for covariance
    \newcommand{\cor}[2]{\ensuremath{\text{cor}(#1,#2)}} %for correlation

  7. For COMBINATORICS AND DISCRETE MATHS

    \let \oldbinom\binom
    \renewcommand{\binom}[2]{C\oldbinom{#1}{#2}} %This adds a C(a;b) to the choose notation
    \newcommand{\floor}[1]{\ensuremath{\left\lfloor#1\right\rfloor}} %for floor and ceiling
    \newcommand{\ceil}[1]{\ensuremath{\left\lceil#1\right\rceil}}
    \newcommand{\lcm}{\ensuremath{\mbox{lcm} }} % LCM -- because \gcd is defined
    \newcommand{\falling}[1]{\ensuremath{\underline{#1}}} % For use with falling factorial, and N-lower k, etc.

  8. For Physics

    \newcommand{\micro}{\ensuremath{\mu}} %for micro symbol, e.g. uPa (micro-Pascals)
    \newcommand{\dB}{\ensuremath{\text{ dB }}} %for dB
    \newcommand{\kHz}{\ensuremath{\text{ kHz }}} %for kHz
    \newcommand{\Hz}{\ensuremath{\text{ Hz }}} %for Hz
    \renewcommand{\deg}{\ensuremath{^\circ}} %for circle degree symbol \deg uses a text style word and not a math style 15\deg C

  9. For Convenience

    %MACRO FOR: \BEGIN{EQUATION} FORMULA_TEXT \END{EQUATION} numbered equation
    \newcommand{\be}{\begin{equation}}
    \newcommand{\ee}{\end{equation}}

  10. For BUSINESS (copyrights, trademarks, etc.) Reference

    \def\registered{\ooalign{\hfil\raise .00ex\hbox{\scriptsize R}\hfil\crcr\mathhexbox20D}}
    % usage: $^\registered$
    % suggested by: Scott D. Anderson, anderson@cs.umass.edu
    \def\tm{\leavevmode\hbox{$\rm {}^{TM}$}}
    % usage: \tm
    % suggested by: Patrick TJ McPhee Toronto Canada ptjm@io.org

HTML snippets

  • Images, resized
    (in angle brackets) img src="http://mathscitech.org/.../mjoy-demo.png" alt="example" style="width:367px;height:385px;"

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Your comments are valued! (Please indulge the gatekeeping question as spam-bots cannot (yet) do simple arithmetic...) - required

Optionally add an image (JPEG only)

 

Stats: 1,066,417 article views since 2010 (March update)

Dear Readers:

Welcome to the conversation!  We publish long-form pieces as well as a curated collection of spotlighted articles covering a broader range of topics.   Notifications for new long-form articles are through the feeds (you can join below).  We love hearing from you.  Feel free to leave your thoughts in comments, or use the contact information to reach us!

Reading List…

Looking for the best long-form articles on this site? Below is a curated list by the main topics covered.

Mathematics-History & Philosophy

  1. What is Mathematics?
  2. Prehistoric Origins of Mathematics
  3. The Mathematics of Uruk & Susa (3500-3000 BCE)
  4. How Algebra Became Abstract: George Peacock & the Birth of Modern Algebra (England, 1830)
  5. The Rise of Mathematical Logic: from Laws of Thoughts to Foundations for Mathematics
  6. Mathematical Finance and The Rise of the Modern Financial Marketplace
  7. A Course in the Philosophy and Foundations of Mathematics
  8. The Development of Mathematics
  9. Catalysts in the Development of Mathematics
  10. Characteristics of Modern Mathematics

Electronic & Software Engineering

  1. Electronics in the Junior School - Gateway to Technology
  2. Coding for Pre-Schoolers - A Turtle Logo in Forth
  3. Experimenting with Microcontrollers - an Arduino development kit for under £12
  4. Making Sensors Talk for under £5, and Voice Controlled Hardware
  5. Computer Programming: A brief survey from the 1940s to the present
  6. Forth, Lisp, & Ruby: languages that make it easy to write your own domain specific language (DSL)
  7. Programming Microcontrollers: Low Power, Small Footprints & Fast Prototypes
  8. Building a 13-key pure analog electronic piano.
  9. TinyPhoto: Embedded Graphics and Low-Fat Computing
  10. Computing / Software Toolkits
  11. Assembly Language programming (Part 1 | Part 2 | Part 3)
  12. Bare Bones Programming: The C Language

Pure & Applied Mathematics

  1. Fuzzy Classifiers & Quantile Statistics Techniques in Continuous Data Monitoring
  2. LOGIC in a Nutshell: Theory & Applications (including a FORTH simulator and digital circuit design)
  3. Finite Summation of Integer Powers: (Part 1 | Part 2 | Part 3)
  4. The Mathematics of Duelling
  5. A Radar Tracking Approach to Data Mining
  6. Analysis of Visitor Statistics: Data Mining in-the-Small
  7. Why Zero Raised to the Zero Power IS One

Technology: Sensors & Intelligent Systems

  1. Knowledge Engineering & the Emerging Technologies of the Next Decade
  2. Sensors and Systems
  3. Unmanned Autonomous Systems & Networks of Sensors
  4. The Advance of Marine Micro-ROVs

Math Education

  1. Teaching Enriched Mathematics, Part 1
  2. Teaching Enriched Mathematics, Part 2: Levelling Student Success Factors
  3. A Course in the Philosophy and Foundations of Mathematics
  4. Logic, Proof, and Professional Communication: five reflections
  5. Good mathematical technique and the case for mathematical insight

Explore…

Timeline