Average Error: 1.8 → 1.8
Time: 32.1s
Precision: 64
\[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
\[\sqrt{\frac{1}{2} \cdot \left(1 + \log \left(e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}\right)\right)}\]
\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}
\sqrt{\frac{1}{2} \cdot \left(1 + \log \left(e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}\right)\right)}
double f(double l, double Om, double kx, double ky) {
        double r51978 = 1.0;
        double r51979 = 2.0;
        double r51980 = r51978 / r51979;
        double r51981 = l;
        double r51982 = r51979 * r51981;
        double r51983 = Om;
        double r51984 = r51982 / r51983;
        double r51985 = pow(r51984, r51979);
        double r51986 = kx;
        double r51987 = sin(r51986);
        double r51988 = pow(r51987, r51979);
        double r51989 = ky;
        double r51990 = sin(r51989);
        double r51991 = pow(r51990, r51979);
        double r51992 = r51988 + r51991;
        double r51993 = r51985 * r51992;
        double r51994 = r51978 + r51993;
        double r51995 = sqrt(r51994);
        double r51996 = r51978 / r51995;
        double r51997 = r51978 + r51996;
        double r51998 = r51980 * r51997;
        double r51999 = sqrt(r51998);
        return r51999;
}

double f(double l, double Om, double kx, double ky) {
        double r52000 = 1.0;
        double r52001 = 2.0;
        double r52002 = r52000 / r52001;
        double r52003 = Om;
        double r52004 = r52001 / r52003;
        double r52005 = l;
        double r52006 = r52004 * r52005;
        double r52007 = pow(r52006, r52001);
        double r52008 = kx;
        double r52009 = sin(r52008);
        double r52010 = pow(r52009, r52001);
        double r52011 = ky;
        double r52012 = sin(r52011);
        double r52013 = pow(r52012, r52001);
        double r52014 = r52010 + r52013;
        double r52015 = fma(r52007, r52014, r52000);
        double r52016 = sqrt(r52015);
        double r52017 = r52000 / r52016;
        double r52018 = exp(r52017);
        double r52019 = log(r52018);
        double r52020 = r52000 + r52019;
        double r52021 = r52002 * r52020;
        double r52022 = sqrt(r52021);
        return r52022;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.8

    \[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
  2. Using strategy rm
  3. Applied add-log-exp1.8

    \[\leadsto \sqrt{\frac{1}{2} \cdot \left(1 + \color{blue}{\log \left(e^{\frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}}\right)}\right)}\]
  4. Simplified1.8

    \[\leadsto \sqrt{\frac{1}{2} \cdot \left(1 + \log \color{blue}{\left(e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}}}\right)}\right)}\]
  5. Final simplification1.8

    \[\leadsto \sqrt{\frac{1}{2} \cdot \left(1 + \log \left(e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}\right)\right)}\]

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (l Om kx ky)
  :name "Toniolo and Linder, Equation (3a)"
  (sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))