Average Error: 1.7 → 1.7
Time: 9.5s
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{\left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1\right) \cdot \frac{1}{2}}\]
\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{\left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1\right) \cdot \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r18949 = 1.0;
        double r18950 = 2.0;
        double r18951 = r18949 / r18950;
        double r18952 = l;
        double r18953 = r18950 * r18952;
        double r18954 = Om;
        double r18955 = r18953 / r18954;
        double r18956 = pow(r18955, r18950);
        double r18957 = kx;
        double r18958 = sin(r18957);
        double r18959 = pow(r18958, r18950);
        double r18960 = ky;
        double r18961 = sin(r18960);
        double r18962 = pow(r18961, r18950);
        double r18963 = r18959 + r18962;
        double r18964 = r18956 * r18963;
        double r18965 = r18949 + r18964;
        double r18966 = sqrt(r18965);
        double r18967 = r18949 / r18966;
        double r18968 = r18949 + r18967;
        double r18969 = r18951 * r18968;
        double r18970 = sqrt(r18969);
        return r18970;
}

double f(double l, double Om, double kx, double ky) {
        double r18971 = 1.0;
        double r18972 = 2.0;
        double r18973 = l;
        double r18974 = r18972 * r18973;
        double r18975 = Om;
        double r18976 = r18974 / r18975;
        double r18977 = pow(r18976, r18972);
        double r18978 = kx;
        double r18979 = sin(r18978);
        double r18980 = pow(r18979, r18972);
        double r18981 = ky;
        double r18982 = sin(r18981);
        double r18983 = pow(r18982, r18972);
        double r18984 = r18980 + r18983;
        double r18985 = fma(r18977, r18984, r18971);
        double r18986 = sqrt(r18985);
        double r18987 = r18971 / r18986;
        double r18988 = r18987 + r18971;
        double r18989 = r18971 / r18972;
        double r18990 = r18988 * r18989;
        double r18991 = sqrt(r18990);
        return r18991;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.7

    \[\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. Simplified1.7

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

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

Reproduce

herbie shell --seed 2019195 +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))))))))))