ENA, Section 1.4, Exercise 4a

Percentage Accurate: 53.4% → 99.6%
Time: 13.3s
Alternatives: 10
Speedup: 19.5×

Specification

?
\[-1 \leq x \land x \leq 1\]
\[\begin{array}{l} \\ \frac{x - \sin x}{\tan x} \end{array} \]
(FPCore (x) :precision binary64 (/ (- x (sin x)) (tan x)))
double code(double x) {
	return (x - sin(x)) / tan(x);
}
real(8) function code(x)
    real(8), intent (in) :: x
    code = (x - sin(x)) / tan(x)
end function
public static double code(double x) {
	return (x - Math.sin(x)) / Math.tan(x);
}
def code(x):
	return (x - math.sin(x)) / math.tan(x)
function code(x)
	return Float64(Float64(x - sin(x)) / tan(x))
end
function tmp = code(x)
	tmp = (x - sin(x)) / tan(x);
end
code[x_] := N[(N[(x - N[Sin[x], $MachinePrecision]), $MachinePrecision] / N[Tan[x], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{x - \sin x}{\tan x}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 10 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 53.4% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{x - \sin x}{\tan x} \end{array} \]
(FPCore (x) :precision binary64 (/ (- x (sin x)) (tan x)))
double code(double x) {
	return (x - sin(x)) / tan(x);
}
real(8) function code(x)
    real(8), intent (in) :: x
    code = (x - sin(x)) / tan(x)
end function
public static double code(double x) {
	return (x - Math.sin(x)) / Math.tan(x);
}
def code(x):
	return (x - math.sin(x)) / math.tan(x)
function code(x)
	return Float64(Float64(x - sin(x)) / tan(x))
end
function tmp = code(x)
	tmp = (x - sin(x)) / tan(x);
end
code[x_] := N[(N[(x - N[Sin[x], $MachinePrecision]), $MachinePrecision] / N[Tan[x], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{x - \sin x}{\tan x}
\end{array}

Alternative 1: 99.6% accurate, 3.5× speedup?

\[\begin{array}{l} \\ \frac{x \cdot x}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right)}} \end{array} \]
(FPCore (x)
 :precision binary64
 (/
  (* x x)
  (/
   1.0
   (fma
    (fma
     (fma (* x x) -0.00023644179894179894 -0.0007275132275132275)
     (* x x)
     -0.06388888888888888)
    (* x x)
    0.16666666666666666))))
double code(double x) {
	return (x * x) / (1.0 / fma(fma(fma((x * x), -0.00023644179894179894, -0.0007275132275132275), (x * x), -0.06388888888888888), (x * x), 0.16666666666666666));
}
function code(x)
	return Float64(Float64(x * x) / Float64(1.0 / fma(fma(fma(Float64(x * x), -0.00023644179894179894, -0.0007275132275132275), Float64(x * x), -0.06388888888888888), Float64(x * x), 0.16666666666666666)))
end
code[x_] := N[(N[(x * x), $MachinePrecision] / N[(1.0 / N[(N[(N[(N[(x * x), $MachinePrecision] * -0.00023644179894179894 + -0.0007275132275132275), $MachinePrecision] * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{x \cdot x}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right)}}
\end{array}
Derivation
  1. Initial program 51.8%

    \[\frac{x - \sin x}{\tan x} \]
  2. Add Preprocessing
  3. Taylor expanded in x around 0

    \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
  4. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
    2. unpow2N/A

      \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
    3. associate-*r*N/A

      \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
    4. lower-*.f64N/A

      \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
  5. Applied rewrites99.3%

    \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
  6. Step-by-step derivation
    1. Applied rewrites99.3%

      \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
    2. Applied rewrites99.4%

      \[\leadsto \frac{\mathsf{fma}\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, \left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, -0.027777777777777776\right)}{\mathsf{fma}\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, \left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, -0.027777777777777776\right)} \cdot \color{blue}{\frac{x \cdot x}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x, x, 0.16666666666666666\right)}}} \]
    3. Step-by-step derivation
      1. Applied rewrites99.4%

        \[\leadsto \frac{x \cdot x}{\color{blue}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right)}}} \]
      2. Add Preprocessing

      Alternative 2: 99.5% accurate, 4.0× speedup?

      \[\begin{array}{l} \\ \mathsf{fma}\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, x \cdot x, 0.16666666666666666 \cdot \left(x \cdot x\right)\right) \end{array} \]
      (FPCore (x)
       :precision binary64
       (fma
        (*
         (*
          (fma
           (fma -0.00023644179894179894 (* x x) -0.0007275132275132275)
           (* x x)
           -0.06388888888888888)
          x)
         x)
        (* x x)
        (* 0.16666666666666666 (* x x))))
      double code(double x) {
      	return fma(((fma(fma(-0.00023644179894179894, (x * x), -0.0007275132275132275), (x * x), -0.06388888888888888) * x) * x), (x * x), (0.16666666666666666 * (x * x)));
      }
      
      function code(x)
      	return fma(Float64(Float64(fma(fma(-0.00023644179894179894, Float64(x * x), -0.0007275132275132275), Float64(x * x), -0.06388888888888888) * x) * x), Float64(x * x), Float64(0.16666666666666666 * Float64(x * x)))
      end
      
      code[x_] := N[(N[(N[(N[(N[(-0.00023644179894179894 * N[(x * x), $MachinePrecision] + -0.0007275132275132275), $MachinePrecision] * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * x), $MachinePrecision] * x), $MachinePrecision] * N[(x * x), $MachinePrecision] + N[(0.16666666666666666 * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
      
      \begin{array}{l}
      
      \\
      \mathsf{fma}\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, x \cdot x, 0.16666666666666666 \cdot \left(x \cdot x\right)\right)
      \end{array}
      
      Derivation
      1. Initial program 51.8%

        \[\frac{x - \sin x}{\tan x} \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
      4. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
        2. unpow2N/A

          \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
        3. associate-*r*N/A

          \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
        4. lower-*.f64N/A

          \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
      5. Applied rewrites99.3%

        \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
      6. Step-by-step derivation
        1. Applied rewrites99.3%

          \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
        2. Step-by-step derivation
          1. Applied rewrites99.3%

            \[\leadsto \mathsf{fma}\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right) \cdot x\right) \cdot x, \color{blue}{x \cdot x}, 0.16666666666666666 \cdot \left(x \cdot x\right)\right) \]
          2. Add Preprocessing

          Alternative 3: 99.5% accurate, 4.9× speedup?

          \[\begin{array}{l} \\ \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \end{array} \]
          (FPCore (x)
           :precision binary64
           (*
            (fma
             (fma
              (fma (* x x) -0.00023644179894179894 -0.0007275132275132275)
              (* x x)
              -0.06388888888888888)
             (* x x)
             0.16666666666666666)
            (* x x)))
          double code(double x) {
          	return fma(fma(fma((x * x), -0.00023644179894179894, -0.0007275132275132275), (x * x), -0.06388888888888888), (x * x), 0.16666666666666666) * (x * x);
          }
          
          function code(x)
          	return Float64(fma(fma(fma(Float64(x * x), -0.00023644179894179894, -0.0007275132275132275), Float64(x * x), -0.06388888888888888), Float64(x * x), 0.16666666666666666) * Float64(x * x))
          end
          
          code[x_] := N[(N[(N[(N[(N[(x * x), $MachinePrecision] * -0.00023644179894179894 + -0.0007275132275132275), $MachinePrecision] * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * N[(x * x), $MachinePrecision]), $MachinePrecision]
          
          \begin{array}{l}
          
          \\
          \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right)
          \end{array}
          
          Derivation
          1. Initial program 51.8%

            \[\frac{x - \sin x}{\tan x} \]
          2. Add Preprocessing
          3. Taylor expanded in x around 0

            \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
            2. unpow2N/A

              \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
            3. associate-*r*N/A

              \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
            4. lower-*.f64N/A

              \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
          5. Applied rewrites99.3%

            \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
          6. Step-by-step derivation
            1. Applied rewrites99.3%

              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
            2. Add Preprocessing

            Alternative 4: 99.6% accurate, 4.9× speedup?

            \[\begin{array}{l} \\ \left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x \end{array} \]
            (FPCore (x)
             :precision binary64
             (*
              (*
               (fma
                (fma
                 (fma -0.00023644179894179894 (* x x) -0.0007275132275132275)
                 (* x x)
                 -0.06388888888888888)
                (* x x)
                0.16666666666666666)
               x)
              x))
            double code(double x) {
            	return (fma(fma(fma(-0.00023644179894179894, (x * x), -0.0007275132275132275), (x * x), -0.06388888888888888), (x * x), 0.16666666666666666) * x) * x;
            }
            
            function code(x)
            	return Float64(Float64(fma(fma(fma(-0.00023644179894179894, Float64(x * x), -0.0007275132275132275), Float64(x * x), -0.06388888888888888), Float64(x * x), 0.16666666666666666) * x) * x)
            end
            
            code[x_] := N[(N[(N[(N[(N[(-0.00023644179894179894 * N[(x * x), $MachinePrecision] + -0.0007275132275132275), $MachinePrecision] * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * x), $MachinePrecision] * x), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x
            \end{array}
            
            Derivation
            1. Initial program 51.8%

              \[\frac{x - \sin x}{\tan x} \]
            2. Add Preprocessing
            3. Taylor expanded in x around 0

              \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
              2. unpow2N/A

                \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
            5. Applied rewrites99.3%

              \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
            6. Add Preprocessing

            Alternative 5: 99.4% accurate, 6.5× speedup?

            \[\begin{array}{l} \\ \mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \end{array} \]
            (FPCore (x)
             :precision binary64
             (*
              (fma
               (fma -0.0007275132275132275 (* x x) -0.06388888888888888)
               (* x x)
               0.16666666666666666)
              (* x x)))
            double code(double x) {
            	return fma(fma(-0.0007275132275132275, (x * x), -0.06388888888888888), (x * x), 0.16666666666666666) * (x * x);
            }
            
            function code(x)
            	return Float64(fma(fma(-0.0007275132275132275, Float64(x * x), -0.06388888888888888), Float64(x * x), 0.16666666666666666) * Float64(x * x))
            end
            
            code[x_] := N[(N[(N[(-0.0007275132275132275 * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * N[(x * x), $MachinePrecision]), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right)
            \end{array}
            
            Derivation
            1. Initial program 51.8%

              \[\frac{x - \sin x}{\tan x} \]
            2. Add Preprocessing
            3. Taylor expanded in x around 0

              \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
              2. unpow2N/A

                \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
            5. Applied rewrites99.3%

              \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
            6. Step-by-step derivation
              1. Applied rewrites99.3%

                \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
              2. Taylor expanded in x around 0

                \[\leadsto \mathsf{fma}\left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}, x \cdot x, \frac{1}{6}\right) \cdot \left(x \cdot x\right) \]
              3. Step-by-step derivation
                1. Applied rewrites99.2%

                  \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \]
                2. Add Preprocessing

                Alternative 6: 99.5% accurate, 6.5× speedup?

                \[\begin{array}{l} \\ \left(\mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x \end{array} \]
                (FPCore (x)
                 :precision binary64
                 (*
                  (*
                   (fma
                    (fma -0.0007275132275132275 (* x x) -0.06388888888888888)
                    (* x x)
                    0.16666666666666666)
                   x)
                  x))
                double code(double x) {
                	return (fma(fma(-0.0007275132275132275, (x * x), -0.06388888888888888), (x * x), 0.16666666666666666) * x) * x;
                }
                
                function code(x)
                	return Float64(Float64(fma(fma(-0.0007275132275132275, Float64(x * x), -0.06388888888888888), Float64(x * x), 0.16666666666666666) * x) * x)
                end
                
                code[x_] := N[(N[(N[(N[(-0.0007275132275132275 * N[(x * x), $MachinePrecision] + -0.06388888888888888), $MachinePrecision] * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * x), $MachinePrecision] * x), $MachinePrecision]
                
                \begin{array}{l}
                
                \\
                \left(\mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x
                \end{array}
                
                Derivation
                1. Initial program 51.8%

                  \[\frac{x - \sin x}{\tan x} \]
                2. Add Preprocessing
                3. Taylor expanded in x around 0

                  \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right)} \]
                4. Step-by-step derivation
                  1. unpow2N/A

                    \[\leadsto \color{blue}{\left(x \cdot x\right)} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right) \]
                  2. associate-*l*N/A

                    \[\leadsto \color{blue}{x \cdot \left(x \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right)\right)} \]
                  3. *-commutativeN/A

                    \[\leadsto \color{blue}{\left(x \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right)\right) \cdot x} \]
                  4. lower-*.f64N/A

                    \[\leadsto \color{blue}{\left(x \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right)\right) \cdot x} \]
                  5. *-commutativeN/A

                    \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right) \cdot x\right)} \cdot x \]
                  6. lower-*.f64N/A

                    \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right)\right) \cdot x\right)} \cdot x \]
                  7. +-commutativeN/A

                    \[\leadsto \left(\color{blue}{\left({x}^{2} \cdot \left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right) + \frac{1}{6}\right)} \cdot x\right) \cdot x \]
                  8. *-commutativeN/A

                    \[\leadsto \left(\left(\color{blue}{\left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}\right) \cdot {x}^{2}} + \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  9. lower-fma.f64N/A

                    \[\leadsto \left(\color{blue}{\mathsf{fma}\left(\frac{-11}{15120} \cdot {x}^{2} - \frac{23}{360}, {x}^{2}, \frac{1}{6}\right)} \cdot x\right) \cdot x \]
                  10. sub-negN/A

                    \[\leadsto \left(\mathsf{fma}\left(\color{blue}{\frac{-11}{15120} \cdot {x}^{2} + \left(\mathsf{neg}\left(\frac{23}{360}\right)\right)}, {x}^{2}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  11. metadata-evalN/A

                    \[\leadsto \left(\mathsf{fma}\left(\frac{-11}{15120} \cdot {x}^{2} + \color{blue}{\frac{-23}{360}}, {x}^{2}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  12. lower-fma.f64N/A

                    \[\leadsto \left(\mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\frac{-11}{15120}, {x}^{2}, \frac{-23}{360}\right)}, {x}^{2}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  13. unpow2N/A

                    \[\leadsto \left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{-11}{15120}, \color{blue}{x \cdot x}, \frac{-23}{360}\right), {x}^{2}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  14. lower-*.f64N/A

                    \[\leadsto \left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{-11}{15120}, \color{blue}{x \cdot x}, \frac{-23}{360}\right), {x}^{2}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  15. unpow2N/A

                    \[\leadsto \left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{-11}{15120}, x \cdot x, \frac{-23}{360}\right), \color{blue}{x \cdot x}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                  16. lower-*.f6499.2

                    \[\leadsto \left(\mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), \color{blue}{x \cdot x}, 0.16666666666666666\right) \cdot x\right) \cdot x \]
                5. Applied rewrites99.2%

                  \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.0007275132275132275, x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
                6. Add Preprocessing

                Alternative 7: 99.3% accurate, 6.7× speedup?

                \[\begin{array}{l} \\ \mathsf{fma}\left(\left(-0.06388888888888888 \cdot x\right) \cdot x, x \cdot x, 0.16666666666666666 \cdot \left(x \cdot x\right)\right) \end{array} \]
                (FPCore (x)
                 :precision binary64
                 (fma
                  (* (* -0.06388888888888888 x) x)
                  (* x x)
                  (* 0.16666666666666666 (* x x))))
                double code(double x) {
                	return fma(((-0.06388888888888888 * x) * x), (x * x), (0.16666666666666666 * (x * x)));
                }
                
                function code(x)
                	return fma(Float64(Float64(-0.06388888888888888 * x) * x), Float64(x * x), Float64(0.16666666666666666 * Float64(x * x)))
                end
                
                code[x_] := N[(N[(N[(-0.06388888888888888 * x), $MachinePrecision] * x), $MachinePrecision] * N[(x * x), $MachinePrecision] + N[(0.16666666666666666 * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
                
                \begin{array}{l}
                
                \\
                \mathsf{fma}\left(\left(-0.06388888888888888 \cdot x\right) \cdot x, x \cdot x, 0.16666666666666666 \cdot \left(x \cdot x\right)\right)
                \end{array}
                
                Derivation
                1. Initial program 51.8%

                  \[\frac{x - \sin x}{\tan x} \]
                2. Add Preprocessing
                3. Taylor expanded in x around 0

                  \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
                4. Step-by-step derivation
                  1. *-commutativeN/A

                    \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
                  2. unpow2N/A

                    \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
                  3. associate-*r*N/A

                    \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
                  4. lower-*.f64N/A

                    \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
                5. Applied rewrites99.3%

                  \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
                6. Step-by-step derivation
                  1. Applied rewrites99.3%

                    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
                  2. Taylor expanded in x around 0

                    \[\leadsto \mathsf{fma}\left(\frac{-23}{360}, x \cdot x, \frac{1}{6}\right) \cdot \left(x \cdot x\right) \]
                  3. Step-by-step derivation
                    1. Applied rewrites99.1%

                      \[\leadsto \mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \]
                    2. Step-by-step derivation
                      1. Applied rewrites99.1%

                        \[\leadsto \mathsf{fma}\left(\left(-0.06388888888888888 \cdot x\right) \cdot x, \color{blue}{x \cdot x}, 0.16666666666666666 \cdot \left(x \cdot x\right)\right) \]
                      2. Add Preprocessing

                      Alternative 8: 99.3% accurate, 9.8× speedup?

                      \[\begin{array}{l} \\ \mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \end{array} \]
                      (FPCore (x)
                       :precision binary64
                       (* (fma -0.06388888888888888 (* x x) 0.16666666666666666) (* x x)))
                      double code(double x) {
                      	return fma(-0.06388888888888888, (x * x), 0.16666666666666666) * (x * x);
                      }
                      
                      function code(x)
                      	return Float64(fma(-0.06388888888888888, Float64(x * x), 0.16666666666666666) * Float64(x * x))
                      end
                      
                      code[x_] := N[(N[(-0.06388888888888888 * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * N[(x * x), $MachinePrecision]), $MachinePrecision]
                      
                      \begin{array}{l}
                      
                      \\
                      \mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right)
                      \end{array}
                      
                      Derivation
                      1. Initial program 51.8%

                        \[\frac{x - \sin x}{\tan x} \]
                      2. Add Preprocessing
                      3. Taylor expanded in x around 0

                        \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right)} \]
                      4. Step-by-step derivation
                        1. *-commutativeN/A

                          \[\leadsto \color{blue}{\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot {x}^{2}} \]
                        2. unpow2N/A

                          \[\leadsto \left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
                        3. associate-*r*N/A

                          \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
                        4. lower-*.f64N/A

                          \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + {x}^{2} \cdot \left({x}^{2} \cdot \left(\frac{-143}{604800} \cdot {x}^{2} - \frac{11}{15120}\right) - \frac{23}{360}\right)\right) \cdot x\right) \cdot x} \]
                      5. Applied rewrites99.3%

                        \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(-0.00023644179894179894, x \cdot x, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
                      6. Step-by-step derivation
                        1. Applied rewrites99.3%

                          \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x \cdot x, -0.00023644179894179894, -0.0007275132275132275\right), x \cdot x, -0.06388888888888888\right), x \cdot x, 0.16666666666666666\right) \cdot \color{blue}{\left(x \cdot x\right)} \]
                        2. Taylor expanded in x around 0

                          \[\leadsto \mathsf{fma}\left(\frac{-23}{360}, x \cdot x, \frac{1}{6}\right) \cdot \left(x \cdot x\right) \]
                        3. Step-by-step derivation
                          1. Applied rewrites99.1%

                            \[\leadsto \mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot \left(x \cdot x\right) \]
                          2. Add Preprocessing

                          Alternative 9: 99.3% accurate, 9.8× speedup?

                          \[\begin{array}{l} \\ \left(\mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x \end{array} \]
                          (FPCore (x)
                           :precision binary64
                           (* (* (fma -0.06388888888888888 (* x x) 0.16666666666666666) x) x))
                          double code(double x) {
                          	return (fma(-0.06388888888888888, (x * x), 0.16666666666666666) * x) * x;
                          }
                          
                          function code(x)
                          	return Float64(Float64(fma(-0.06388888888888888, Float64(x * x), 0.16666666666666666) * x) * x)
                          end
                          
                          code[x_] := N[(N[(N[(-0.06388888888888888 * N[(x * x), $MachinePrecision] + 0.16666666666666666), $MachinePrecision] * x), $MachinePrecision] * x), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          \left(\mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x
                          \end{array}
                          
                          Derivation
                          1. Initial program 51.8%

                            \[\frac{x - \sin x}{\tan x} \]
                          2. Add Preprocessing
                          3. Taylor expanded in x around 0

                            \[\leadsto \color{blue}{{x}^{2} \cdot \left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right)} \]
                          4. Step-by-step derivation
                            1. unpow2N/A

                              \[\leadsto \color{blue}{\left(x \cdot x\right)} \cdot \left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right) \]
                            2. associate-*l*N/A

                              \[\leadsto \color{blue}{x \cdot \left(x \cdot \left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right)\right)} \]
                            3. *-commutativeN/A

                              \[\leadsto \color{blue}{\left(x \cdot \left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right)\right) \cdot x} \]
                            4. lower-*.f64N/A

                              \[\leadsto \color{blue}{\left(x \cdot \left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right)\right) \cdot x} \]
                            5. *-commutativeN/A

                              \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right) \cdot x\right)} \cdot x \]
                            6. lower-*.f64N/A

                              \[\leadsto \color{blue}{\left(\left(\frac{1}{6} + \frac{-23}{360} \cdot {x}^{2}\right) \cdot x\right)} \cdot x \]
                            7. +-commutativeN/A

                              \[\leadsto \left(\color{blue}{\left(\frac{-23}{360} \cdot {x}^{2} + \frac{1}{6}\right)} \cdot x\right) \cdot x \]
                            8. lower-fma.f64N/A

                              \[\leadsto \left(\color{blue}{\mathsf{fma}\left(\frac{-23}{360}, {x}^{2}, \frac{1}{6}\right)} \cdot x\right) \cdot x \]
                            9. unpow2N/A

                              \[\leadsto \left(\mathsf{fma}\left(\frac{-23}{360}, \color{blue}{x \cdot x}, \frac{1}{6}\right) \cdot x\right) \cdot x \]
                            10. lower-*.f6499.1

                              \[\leadsto \left(\mathsf{fma}\left(-0.06388888888888888, \color{blue}{x \cdot x}, 0.16666666666666666\right) \cdot x\right) \cdot x \]
                          5. Applied rewrites99.1%

                            \[\leadsto \color{blue}{\left(\mathsf{fma}\left(-0.06388888888888888, x \cdot x, 0.16666666666666666\right) \cdot x\right) \cdot x} \]
                          6. Add Preprocessing

                          Alternative 10: 98.6% accurate, 19.5× speedup?

                          \[\begin{array}{l} \\ 0.16666666666666666 \cdot \left(x \cdot x\right) \end{array} \]
                          (FPCore (x) :precision binary64 (* 0.16666666666666666 (* x x)))
                          double code(double x) {
                          	return 0.16666666666666666 * (x * x);
                          }
                          
                          real(8) function code(x)
                              real(8), intent (in) :: x
                              code = 0.16666666666666666d0 * (x * x)
                          end function
                          
                          public static double code(double x) {
                          	return 0.16666666666666666 * (x * x);
                          }
                          
                          def code(x):
                          	return 0.16666666666666666 * (x * x)
                          
                          function code(x)
                          	return Float64(0.16666666666666666 * Float64(x * x))
                          end
                          
                          function tmp = code(x)
                          	tmp = 0.16666666666666666 * (x * x);
                          end
                          
                          code[x_] := N[(0.16666666666666666 * N[(x * x), $MachinePrecision]), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          0.16666666666666666 \cdot \left(x \cdot x\right)
                          \end{array}
                          
                          Derivation
                          1. Initial program 51.8%

                            \[\frac{x - \sin x}{\tan x} \]
                          2. Add Preprocessing
                          3. Taylor expanded in x around 0

                            \[\leadsto \color{blue}{\frac{1}{6} \cdot {x}^{2}} \]
                          4. Step-by-step derivation
                            1. *-commutativeN/A

                              \[\leadsto \color{blue}{{x}^{2} \cdot \frac{1}{6}} \]
                            2. lower-*.f64N/A

                              \[\leadsto \color{blue}{{x}^{2} \cdot \frac{1}{6}} \]
                            3. unpow2N/A

                              \[\leadsto \color{blue}{\left(x \cdot x\right)} \cdot \frac{1}{6} \]
                            4. lower-*.f6498.8

                              \[\leadsto \color{blue}{\left(x \cdot x\right)} \cdot 0.16666666666666666 \]
                          5. Applied rewrites98.8%

                            \[\leadsto \color{blue}{\left(x \cdot x\right) \cdot 0.16666666666666666} \]
                          6. Final simplification98.8%

                            \[\leadsto 0.16666666666666666 \cdot \left(x \cdot x\right) \]
                          7. Add Preprocessing

                          Developer Target 1: 98.6% accurate, 19.5× speedup?

                          \[\begin{array}{l} \\ 0.16666666666666666 \cdot \left(x \cdot x\right) \end{array} \]
                          (FPCore (x) :precision binary64 (* 0.16666666666666666 (* x x)))
                          double code(double x) {
                          	return 0.16666666666666666 * (x * x);
                          }
                          
                          real(8) function code(x)
                              real(8), intent (in) :: x
                              code = 0.16666666666666666d0 * (x * x)
                          end function
                          
                          public static double code(double x) {
                          	return 0.16666666666666666 * (x * x);
                          }
                          
                          def code(x):
                          	return 0.16666666666666666 * (x * x)
                          
                          function code(x)
                          	return Float64(0.16666666666666666 * Float64(x * x))
                          end
                          
                          function tmp = code(x)
                          	tmp = 0.16666666666666666 * (x * x);
                          end
                          
                          code[x_] := N[(0.16666666666666666 * N[(x * x), $MachinePrecision]), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          0.16666666666666666 \cdot \left(x \cdot x\right)
                          \end{array}
                          

                          Reproduce

                          ?
                          herbie shell --seed 2024240 
                          (FPCore (x)
                            :name "ENA, Section 1.4, Exercise 4a"
                            :precision binary64
                            :pre (and (<= -1.0 x) (<= x 1.0))
                          
                            :alt
                            (! :herbie-platform default (* 1/6 (* x x)))
                          
                            (/ (- x (sin x)) (tan x)))