Average Error: 7.9 → 4.3
Time: 1.6s
Precision: binary64
\[e^{\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}}\]
\[\begin{array}{l} \mathbf{if}\;\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR} \le -4.01093996882167036 \cdot 10^{-243}:\\ \;\;\;\;e^{\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}}\\ \mathbf{else}:\\ \;\;\;\;{\left(e^{aS - aP}\right)}^{\left(\frac{aP - aS}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}\right)}\\ \end{array}\]

Error

Bits error versus aP

Bits error versus aS

Bits error versus KSigmaR

Derivation

  1. Split input into 2 regimes
  2. if (/ (neg (* (- aP aS) (- aP aS))) (* (* 2.0 KSigmaR) KSigmaR)) < -4.01093996882167036e-243

    1. Initial program 0.0

      \[e^{\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}}\]

    if -4.01093996882167036e-243 < (/ (neg (* (- aP aS) (- aP aS))) (* (* 2.0 KSigmaR) KSigmaR))

    1. Initial program 24.3

      \[e^{\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}}\]
    2. Simplified13.4

      \[\leadsto \color{blue}{{\left(e^{aS - aP}\right)}^{\left(\frac{aP - aS}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR} \le -4.01093996882167036 \cdot 10^{-243}:\\ \;\;\;\;e^{\frac{-\left(aP - aS\right) \cdot \left(aP - aS\right)}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}}\\ \mathbf{else}:\\ \;\;\;\;{\left(e^{aS - aP}\right)}^{\left(\frac{aP - aS}{\left(2 \cdot KSigmaR\right) \cdot KSigmaR}\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (aP aS KSigmaR)
  :name "(exp (/ (- (* (- aP aS) (- aP aS))) (* (* 2.0 KSigmaR) KSigmaR)))"
  :precision binary64
  (exp (/ (neg (* (- aP aS) (- aP aS))) (* (* 2.0 KSigmaR) KSigmaR))))