HairBSDF, sample_f, cosTheta

Percentage Accurate: 99.5% → 99.5%
Time: 11.6s
Alternatives: 22
Speedup: 1.0×

Specification

?
\[\left(10^{-5} \leq u \land u \leq 1\right) \land \left(0 \leq v \land v \leq 109.746574\right)\]
\[\begin{array}{l} \\ 1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \end{array} \]
(FPCore (u v)
 :precision binary32
 (+ 1.0 (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v))))))))
float code(float u, float v) {
	return 1.0f + (v * logf((u + ((1.0f - u) * expf((-2.0f / v))))));
}
real(4) function code(u, v)
    real(4), intent (in) :: u
    real(4), intent (in) :: v
    code = 1.0e0 + (v * log((u + ((1.0e0 - u) * exp(((-2.0e0) / v))))))
end function
function code(u, v)
	return Float32(Float32(1.0) + Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))))
end
function tmp = code(u, v)
	tmp = single(1.0) + (v * log((u + ((single(1.0) - u) * exp((single(-2.0) / v))))));
end
\begin{array}{l}

\\
1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right)
\end{array}

Sampling outcomes in binary32 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 22 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: 99.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ 1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \end{array} \]
(FPCore (u v)
 :precision binary32
 (+ 1.0 (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v))))))))
float code(float u, float v) {
	return 1.0f + (v * logf((u + ((1.0f - u) * expf((-2.0f / v))))));
}
real(4) function code(u, v)
    real(4), intent (in) :: u
    real(4), intent (in) :: v
    code = 1.0e0 + (v * log((u + ((1.0e0 - u) * exp(((-2.0e0) / v))))))
end function
function code(u, v)
	return Float32(Float32(1.0) + Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))))
end
function tmp = code(u, v)
	tmp = single(1.0) + (v * log((u + ((single(1.0) - u) * exp((single(-2.0) / v))))));
end
\begin{array}{l}

\\
1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right)
\end{array}

Alternative 1: 99.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, 1 - u, u\right)\right) \end{array} \]
(FPCore (u v)
 :precision binary32
 (+ 1.0 (* v (log (fma (/ 1.0 (exp (/ 2.0 v))) (- 1.0 u) u)))))
float code(float u, float v) {
	return 1.0f + (v * logf(fmaf((1.0f / expf((2.0f / v))), (1.0f - u), u)));
}
function code(u, v)
	return Float32(Float32(1.0) + Float32(v * log(fma(Float32(Float32(1.0) / exp(Float32(Float32(2.0) / v))), Float32(Float32(1.0) - u), u))))
end
\begin{array}{l}

\\
1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, 1 - u, u\right)\right)
\end{array}
Derivation
  1. Initial program 99.6%

    \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u around 0

    \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
  4. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
    2. distribute-rgt-inN/A

      \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
    3. *-lft-identityN/A

      \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
    4. associate-+r+N/A

      \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
    5. *-rgt-identityN/A

      \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
    6. *-commutativeN/A

      \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
    7. associate-*l*N/A

      \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
    8. distribute-lft-inN/A

      \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
    9. neg-mul-1N/A

      \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
    10. sub-negN/A

      \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
    11. lower-fma.f32N/A

      \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
  5. Applied rewrites99.6%

    \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
  6. Step-by-step derivation
    1. Applied rewrites99.6%

      \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, \color{blue}{1} - u, u\right)\right) \]
    2. Add Preprocessing

    Alternative 2: 91.3% accurate, 0.7× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, -24, 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
    (FPCore (u v)
     :precision binary32
     (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
       (+
        1.0
        (fma
         0.5
         (/ (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0)) v)
         (fma
          0.16666666666666666
          (/ (* u (fma u -24.0 8.0)) (* v v))
          (fma -2.0 (- u) -2.0))))
       1.0))
    float code(float u, float v) {
    	float tmp;
    	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
    		tmp = 1.0f + fmaf(0.5f, (((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)) / v), fmaf(0.16666666666666666f, ((u * fmaf(u, -24.0f, 8.0f)) / (v * v)), fmaf(-2.0f, -u, -2.0f)));
    	} else {
    		tmp = 1.0f;
    	}
    	return tmp;
    }
    
    function code(u, v)
    	tmp = Float32(0.0)
    	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
    		tmp = Float32(Float32(1.0) + fma(Float32(0.5), Float32(Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))) / v), fma(Float32(0.16666666666666666), Float32(Float32(u * fma(u, Float32(-24.0), Float32(8.0))) / Float32(v * v)), fma(Float32(-2.0), Float32(-u), Float32(-2.0)))));
    	else
    		tmp = Float32(1.0);
    	end
    	return tmp
    end
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
    \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, -24, 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;1\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

      1. Initial program 94.2%

        \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
      2. Add Preprocessing
      3. Taylor expanded in v around inf

        \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \left(\frac{1}{6} \cdot \frac{-16 \cdot {\left(1 - u\right)}^{3} + \left(-8 \cdot \left(1 - u\right) + 24 \cdot {\left(1 - u\right)}^{2}\right)}{{v}^{2}} + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)\right)} \]
      4. Applied rewrites67.3%

        \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(-8, -u, -8\right)\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)} \]
      5. Taylor expanded in u around 0

        \[\leadsto 1 + \mathsf{fma}\left(\frac{1}{2}, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(\frac{1}{6}, \frac{u \cdot \left(8 + -24 \cdot u\right)}{v \cdot v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right)\right) \]
      6. Step-by-step derivation
        1. Applied rewrites65.5%

          \[\leadsto 1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, -24, 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right) \]

        if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

        1. Initial program 99.9%

          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
        2. Add Preprocessing
        3. Taylor expanded in v around 0

          \[\leadsto \color{blue}{1} \]
        4. Step-by-step derivation
          1. Applied rewrites90.0%

            \[\leadsto \color{blue}{1} \]
        5. Recombined 2 regimes into one program.
        6. Add Preprocessing

        Alternative 3: 91.3% accurate, 0.8× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot 8}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
        (FPCore (u v)
         :precision binary32
         (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
           (+
            1.0
            (fma
             0.5
             (/ (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0)) v)
             (fma 0.16666666666666666 (/ (* u 8.0) (* v v)) (fma -2.0 (- u) -2.0))))
           1.0))
        float code(float u, float v) {
        	float tmp;
        	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
        		tmp = 1.0f + fmaf(0.5f, (((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)) / v), fmaf(0.16666666666666666f, ((u * 8.0f) / (v * v)), fmaf(-2.0f, -u, -2.0f)));
        	} else {
        		tmp = 1.0f;
        	}
        	return tmp;
        }
        
        function code(u, v)
        	tmp = Float32(0.0)
        	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
        		tmp = Float32(Float32(1.0) + fma(Float32(0.5), Float32(Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))) / v), fma(Float32(0.16666666666666666), Float32(Float32(u * Float32(8.0)) / Float32(v * v)), fma(Float32(-2.0), Float32(-u), Float32(-2.0)))));
        	else
        		tmp = Float32(1.0);
        	end
        	return tmp
        end
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
        \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot 8}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\
        
        \mathbf{else}:\\
        \;\;\;\;1\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

          1. Initial program 94.2%

            \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
          2. Add Preprocessing
          3. Taylor expanded in v around inf

            \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \left(\frac{1}{6} \cdot \frac{-16 \cdot {\left(1 - u\right)}^{3} + \left(-8 \cdot \left(1 - u\right) + 24 \cdot {\left(1 - u\right)}^{2}\right)}{{v}^{2}} + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)\right)} \]
          4. Applied rewrites67.3%

            \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(-8, -u, -8\right)\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)} \]
          5. Taylor expanded in u around 0

            \[\leadsto 1 + \mathsf{fma}\left(\frac{1}{2}, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(\frac{1}{6}, \frac{8 \cdot u}{v \cdot v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right)\right) \]
          6. Step-by-step derivation
            1. Applied rewrites65.4%

              \[\leadsto 1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot 8}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right) \]

            if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

            1. Initial program 99.9%

              \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in v around 0

              \[\leadsto \color{blue}{1} \]
            4. Step-by-step derivation
              1. Applied rewrites90.0%

                \[\leadsto \color{blue}{1} \]
            5. Recombined 2 regimes into one program.
            6. Add Preprocessing

            Alternative 4: 91.2% accurate, 0.8× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(-2, u, \frac{\mathsf{fma}\left(\frac{u}{v}, 0.6666666666666666, u \cdot 1.3333333333333333\right)}{-v}\right)}{v}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
            (FPCore (u v)
             :precision binary32
             (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
               (-
                (fma u 2.0 -1.0)
                (/
                 (fma
                  -2.0
                  u
                  (/ (fma (/ u v) 0.6666666666666666 (* u 1.3333333333333333)) (- v)))
                 v))
               1.0))
            float code(float u, float v) {
            	float tmp;
            	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
            		tmp = fmaf(u, 2.0f, -1.0f) - (fmaf(-2.0f, u, (fmaf((u / v), 0.6666666666666666f, (u * 1.3333333333333333f)) / -v)) / v);
            	} else {
            		tmp = 1.0f;
            	}
            	return tmp;
            }
            
            function code(u, v)
            	tmp = Float32(0.0)
            	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
            		tmp = Float32(fma(u, Float32(2.0), Float32(-1.0)) - Float32(fma(Float32(-2.0), u, Float32(fma(Float32(u / v), Float32(0.6666666666666666), Float32(u * Float32(1.3333333333333333))) / Float32(-v))) / v));
            	else
            		tmp = Float32(1.0);
            	end
            	return tmp
            end
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
            \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(-2, u, \frac{\mathsf{fma}\left(\frac{u}{v}, 0.6666666666666666, u \cdot 1.3333333333333333\right)}{-v}\right)}{v}\\
            
            \mathbf{else}:\\
            \;\;\;\;1\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

              1. Initial program 94.2%

                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
              2. Add Preprocessing
              3. Taylor expanded in u around 0

                \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) - 1} \]
              4. Step-by-step derivation
                1. sub-negN/A

                  \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) + \left(\mathsf{neg}\left(1\right)\right)} \]
                2. associate-*r*N/A

                  \[\leadsto \color{blue}{\left(u \cdot v\right) \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                3. *-commutativeN/A

                  \[\leadsto \color{blue}{\left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                4. metadata-evalN/A

                  \[\leadsto \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right) + \color{blue}{-1} \]
                5. lower-fma.f32N/A

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{e^{\frac{-2}{v}}} - 1, u \cdot v, -1\right)} \]
                6. rec-expN/A

                  \[\leadsto \mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(\frac{-2}{v}\right)}} - 1, u \cdot v, -1\right) \]
                7. distribute-neg-fracN/A

                  \[\leadsto \mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(-2\right)}{v}}} - 1, u \cdot v, -1\right) \]
                8. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2}}{v}} - 1, u \cdot v, -1\right) \]
                9. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2 \cdot 1}}{v}} - 1, u \cdot v, -1\right) \]
                10. associate-*r/N/A

                  \[\leadsto \mathsf{fma}\left(e^{\color{blue}{2 \cdot \frac{1}{v}}} - 1, u \cdot v, -1\right) \]
                11. lower-expm1.f32N/A

                  \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{expm1}\left(2 \cdot \frac{1}{v}\right)}, u \cdot v, -1\right) \]
                12. associate-*r/N/A

                  \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right), u \cdot v, -1\right) \]
                13. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{\color{blue}{2}}{v}\right), u \cdot v, -1\right) \]
                14. lower-/.f32N/A

                  \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2}{v}}\right), u \cdot v, -1\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                16. lower-*.f3266.9

                  \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
              5. Applied rewrites66.9%

                \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), v \cdot u, -1\right)} \]
              6. Taylor expanded in v around -inf

                \[\leadsto \left(-1 \cdot \frac{-2 \cdot u + -1 \cdot \frac{\frac{2}{3} \cdot \frac{u}{v} + \frac{4}{3} \cdot u}{v}}{v} + 2 \cdot u\right) - \color{blue}{1} \]
              7. Applied rewrites63.0%

                \[\leadsto \mathsf{fma}\left(u, 2, -1\right) - \color{blue}{\frac{\mathsf{fma}\left(-2, u, \frac{\mathsf{fma}\left(\frac{u}{v}, 0.6666666666666666, u \cdot 1.3333333333333333\right)}{-v}\right)}{v}} \]

              if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

              1. Initial program 99.9%

                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
              2. Add Preprocessing
              3. Taylor expanded in v around 0

                \[\leadsto \color{blue}{1} \]
              4. Step-by-step derivation
                1. Applied rewrites90.0%

                  \[\leadsto \color{blue}{1} \]
              5. Recombined 2 regimes into one program.
              6. Add Preprocessing

              Alternative 5: 91.1% accurate, 0.8× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;u \cdot \left(\left(\frac{2}{v} + \frac{1.3333333333333333}{v \cdot v}\right) + \left(2 + \frac{-1}{u}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
              (FPCore (u v)
               :precision binary32
               (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
                 (* u (+ (+ (/ 2.0 v) (/ 1.3333333333333333 (* v v))) (+ 2.0 (/ -1.0 u))))
                 1.0))
              float code(float u, float v) {
              	float tmp;
              	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
              		tmp = u * (((2.0f / v) + (1.3333333333333333f / (v * v))) + (2.0f + (-1.0f / u)));
              	} else {
              		tmp = 1.0f;
              	}
              	return tmp;
              }
              
              real(4) function code(u, v)
                  real(4), intent (in) :: u
                  real(4), intent (in) :: v
                  real(4) :: tmp
                  if ((v * log((u + ((1.0e0 - u) * exp(((-2.0e0) / v)))))) <= (-1.0e0)) then
                      tmp = u * (((2.0e0 / v) + (1.3333333333333333e0 / (v * v))) + (2.0e0 + ((-1.0e0) / u)))
                  else
                      tmp = 1.0e0
                  end if
                  code = tmp
              end function
              
              function code(u, v)
              	tmp = Float32(0.0)
              	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
              		tmp = Float32(u * Float32(Float32(Float32(Float32(2.0) / v) + Float32(Float32(1.3333333333333333) / Float32(v * v))) + Float32(Float32(2.0) + Float32(Float32(-1.0) / u))));
              	else
              		tmp = Float32(1.0);
              	end
              	return tmp
              end
              
              function tmp_2 = code(u, v)
              	tmp = single(0.0);
              	if ((v * log((u + ((single(1.0) - u) * exp((single(-2.0) / v)))))) <= single(-1.0))
              		tmp = u * (((single(2.0) / v) + (single(1.3333333333333333) / (v * v))) + (single(2.0) + (single(-1.0) / u)));
              	else
              		tmp = single(1.0);
              	end
              	tmp_2 = tmp;
              end
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
              \;\;\;\;u \cdot \left(\left(\frac{2}{v} + \frac{1.3333333333333333}{v \cdot v}\right) + \left(2 + \frac{-1}{u}\right)\right)\\
              
              \mathbf{else}:\\
              \;\;\;\;1\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

                1. Initial program 94.2%

                  \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                2. Add Preprocessing
                3. Taylor expanded in u around 0

                  \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) - 1} \]
                4. Step-by-step derivation
                  1. sub-negN/A

                    \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) + \left(\mathsf{neg}\left(1\right)\right)} \]
                  2. associate-*r*N/A

                    \[\leadsto \color{blue}{\left(u \cdot v\right) \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                  3. *-commutativeN/A

                    \[\leadsto \color{blue}{\left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                  4. metadata-evalN/A

                    \[\leadsto \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right) + \color{blue}{-1} \]
                  5. lower-fma.f32N/A

                    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{e^{\frac{-2}{v}}} - 1, u \cdot v, -1\right)} \]
                  6. rec-expN/A

                    \[\leadsto \mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(\frac{-2}{v}\right)}} - 1, u \cdot v, -1\right) \]
                  7. distribute-neg-fracN/A

                    \[\leadsto \mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(-2\right)}{v}}} - 1, u \cdot v, -1\right) \]
                  8. metadata-evalN/A

                    \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2}}{v}} - 1, u \cdot v, -1\right) \]
                  9. metadata-evalN/A

                    \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2 \cdot 1}}{v}} - 1, u \cdot v, -1\right) \]
                  10. associate-*r/N/A

                    \[\leadsto \mathsf{fma}\left(e^{\color{blue}{2 \cdot \frac{1}{v}}} - 1, u \cdot v, -1\right) \]
                  11. lower-expm1.f32N/A

                    \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{expm1}\left(2 \cdot \frac{1}{v}\right)}, u \cdot v, -1\right) \]
                  12. associate-*r/N/A

                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right), u \cdot v, -1\right) \]
                  13. metadata-evalN/A

                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{\color{blue}{2}}{v}\right), u \cdot v, -1\right) \]
                  14. lower-/.f32N/A

                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2}{v}}\right), u \cdot v, -1\right) \]
                  15. *-commutativeN/A

                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                  16. lower-*.f3266.9

                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                5. Applied rewrites66.9%

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), v \cdot u, -1\right)} \]
                6. Taylor expanded in v around inf

                  \[\leadsto \left(\frac{4}{3} \cdot \frac{u}{{v}^{2}} + \left(2 \cdot u + 2 \cdot \frac{u}{v}\right)\right) - \color{blue}{1} \]
                7. Step-by-step derivation
                  1. Applied rewrites61.4%

                    \[\leadsto \mathsf{fma}\left(u, \color{blue}{2 + \frac{2}{v}}, \mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v}, -1\right)\right) \]
                  2. Taylor expanded in u around inf

                    \[\leadsto u \cdot \left(\left(2 + \left(\frac{4}{3} \cdot \frac{1}{{v}^{2}} + 2 \cdot \frac{1}{v}\right)\right) - \color{blue}{\frac{1}{u}}\right) \]
                  3. Step-by-step derivation
                    1. Applied rewrites61.6%

                      \[\leadsto u \cdot \left(\left(\frac{2}{v} + \frac{1.3333333333333333}{v \cdot v}\right) + \color{blue}{\left(2 + \frac{-1}{u}\right)}\right) \]

                    if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

                    1. Initial program 99.9%

                      \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                    2. Add Preprocessing
                    3. Taylor expanded in v around 0

                      \[\leadsto \color{blue}{1} \]
                    4. Step-by-step derivation
                      1. Applied rewrites90.0%

                        \[\leadsto \color{blue}{1} \]
                    5. Recombined 2 regimes into one program.
                    6. Add Preprocessing

                    Alternative 6: 91.1% accurate, 0.8× speedup?

                    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;\mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v} + \left(2 + \frac{2}{v}\right), -1\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
                    (FPCore (u v)
                     :precision binary32
                     (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
                       (fma u (+ (/ 1.3333333333333333 (* v v)) (+ 2.0 (/ 2.0 v))) -1.0)
                       1.0))
                    float code(float u, float v) {
                    	float tmp;
                    	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
                    		tmp = fmaf(u, ((1.3333333333333333f / (v * v)) + (2.0f + (2.0f / v))), -1.0f);
                    	} else {
                    		tmp = 1.0f;
                    	}
                    	return tmp;
                    }
                    
                    function code(u, v)
                    	tmp = Float32(0.0)
                    	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
                    		tmp = fma(u, Float32(Float32(Float32(1.3333333333333333) / Float32(v * v)) + Float32(Float32(2.0) + Float32(Float32(2.0) / v))), Float32(-1.0));
                    	else
                    		tmp = Float32(1.0);
                    	end
                    	return tmp
                    end
                    
                    \begin{array}{l}
                    
                    \\
                    \begin{array}{l}
                    \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
                    \;\;\;\;\mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v} + \left(2 + \frac{2}{v}\right), -1\right)\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;1\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 2 regimes
                    2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

                      1. Initial program 94.2%

                        \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                      2. Add Preprocessing
                      3. Taylor expanded in u around 0

                        \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) - 1} \]
                      4. Step-by-step derivation
                        1. sub-negN/A

                          \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) + \left(\mathsf{neg}\left(1\right)\right)} \]
                        2. associate-*r*N/A

                          \[\leadsto \color{blue}{\left(u \cdot v\right) \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                        3. *-commutativeN/A

                          \[\leadsto \color{blue}{\left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                        4. metadata-evalN/A

                          \[\leadsto \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right) + \color{blue}{-1} \]
                        5. lower-fma.f32N/A

                          \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{e^{\frac{-2}{v}}} - 1, u \cdot v, -1\right)} \]
                        6. rec-expN/A

                          \[\leadsto \mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(\frac{-2}{v}\right)}} - 1, u \cdot v, -1\right) \]
                        7. distribute-neg-fracN/A

                          \[\leadsto \mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(-2\right)}{v}}} - 1, u \cdot v, -1\right) \]
                        8. metadata-evalN/A

                          \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2}}{v}} - 1, u \cdot v, -1\right) \]
                        9. metadata-evalN/A

                          \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2 \cdot 1}}{v}} - 1, u \cdot v, -1\right) \]
                        10. associate-*r/N/A

                          \[\leadsto \mathsf{fma}\left(e^{\color{blue}{2 \cdot \frac{1}{v}}} - 1, u \cdot v, -1\right) \]
                        11. lower-expm1.f32N/A

                          \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{expm1}\left(2 \cdot \frac{1}{v}\right)}, u \cdot v, -1\right) \]
                        12. associate-*r/N/A

                          \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right), u \cdot v, -1\right) \]
                        13. metadata-evalN/A

                          \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{\color{blue}{2}}{v}\right), u \cdot v, -1\right) \]
                        14. lower-/.f32N/A

                          \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2}{v}}\right), u \cdot v, -1\right) \]
                        15. *-commutativeN/A

                          \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                        16. lower-*.f3266.9

                          \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                      5. Applied rewrites66.9%

                        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), v \cdot u, -1\right)} \]
                      6. Taylor expanded in v around inf

                        \[\leadsto \left(\frac{4}{3} \cdot \frac{u}{{v}^{2}} + \left(2 \cdot u + 2 \cdot \frac{u}{v}\right)\right) - \color{blue}{1} \]
                      7. Step-by-step derivation
                        1. Applied rewrites61.4%

                          \[\leadsto \mathsf{fma}\left(u, \color{blue}{2 + \frac{2}{v}}, \mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v}, -1\right)\right) \]
                        2. Step-by-step derivation
                          1. Applied rewrites61.4%

                            \[\leadsto \mathsf{fma}\left(u, \left(2 + \frac{2}{v}\right) + \color{blue}{\frac{1.3333333333333333}{v \cdot v}}, -1\right) \]

                          if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

                          1. Initial program 99.9%

                            \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                          2. Add Preprocessing
                          3. Taylor expanded in v around 0

                            \[\leadsto \color{blue}{1} \]
                          4. Step-by-step derivation
                            1. Applied rewrites90.0%

                              \[\leadsto \color{blue}{1} \]
                          5. Recombined 2 regimes into one program.
                          6. Final simplification88.1%

                            \[\leadsto \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;\mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v} + \left(2 + \frac{2}{v}\right), -1\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
                          7. Add Preprocessing

                          Alternative 7: 90.9% accurate, 0.9× speedup?

                          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;1 + \mathsf{fma}\left(u \cdot 4, \frac{0.5}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
                          (FPCore (u v)
                           :precision binary32
                           (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
                             (+ 1.0 (fma (* u 4.0) (/ 0.5 v) (fma -2.0 (- u) -2.0)))
                             1.0))
                          float code(float u, float v) {
                          	float tmp;
                          	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
                          		tmp = 1.0f + fmaf((u * 4.0f), (0.5f / v), fmaf(-2.0f, -u, -2.0f));
                          	} else {
                          		tmp = 1.0f;
                          	}
                          	return tmp;
                          }
                          
                          function code(u, v)
                          	tmp = Float32(0.0)
                          	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
                          		tmp = Float32(Float32(1.0) + fma(Float32(u * Float32(4.0)), Float32(Float32(0.5) / v), fma(Float32(-2.0), Float32(-u), Float32(-2.0))));
                          	else
                          		tmp = Float32(1.0);
                          	end
                          	return tmp
                          end
                          
                          \begin{array}{l}
                          
                          \\
                          \begin{array}{l}
                          \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
                          \;\;\;\;1 + \mathsf{fma}\left(u \cdot 4, \frac{0.5}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\\
                          
                          \mathbf{else}:\\
                          \;\;\;\;1\\
                          
                          
                          \end{array}
                          \end{array}
                          
                          Derivation
                          1. Split input into 2 regimes
                          2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

                            1. Initial program 94.2%

                              \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                            2. Add Preprocessing
                            3. Taylor expanded in v around inf

                              \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)} \]
                            4. Step-by-step derivation
                              1. +-commutativeN/A

                                \[\leadsto 1 + \color{blue}{\left(\frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v} + -2 \cdot \left(1 - u\right)\right)} \]
                              2. associate-*r/N/A

                                \[\leadsto 1 + \left(\color{blue}{\frac{\frac{1}{2} \cdot \left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right)}{v}} + -2 \cdot \left(1 - u\right)\right) \]
                              3. *-commutativeN/A

                                \[\leadsto 1 + \left(\frac{\color{blue}{\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) \cdot \frac{1}{2}}}{v} + -2 \cdot \left(1 - u\right)\right) \]
                              4. associate-/l*N/A

                                \[\leadsto 1 + \left(\color{blue}{\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) \cdot \frac{\frac{1}{2}}{v}} + -2 \cdot \left(1 - u\right)\right) \]
                              5. lower-fma.f32N/A

                                \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right)} \]
                              6. *-commutativeN/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{{\left(1 - u\right)}^{2} \cdot -4} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              7. unpow2N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(\left(1 - u\right) \cdot \left(1 - u\right)\right)} \cdot -4 + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              8. associate-*l*N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4\right)} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              9. *-commutativeN/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4\right) + \color{blue}{\left(1 - u\right) \cdot 4}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              10. distribute-lft-outN/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4 + 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              11. lower-*.f32N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4 + 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              12. lower--.f32N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right)} \cdot \left(\left(1 - u\right) \cdot -4 + 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              13. lower-fma.f32N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \color{blue}{\mathsf{fma}\left(1 - u, -4, 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              14. lower--.f32N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(\color{blue}{1 - u}, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                              15. lower-/.f32N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \color{blue}{\frac{\frac{1}{2}}{v}}, -2 \cdot \left(1 - u\right)\right) \]
                              16. sub-negN/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \color{blue}{\left(1 + \left(\mathsf{neg}\left(u\right)\right)\right)}\right) \]
                              17. neg-mul-1N/A

                                \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 + \color{blue}{-1 \cdot u}\right)\right) \]
                            5. Applied rewrites58.2%

                              \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right)} \]
                            6. Taylor expanded in u around 0

                              \[\leadsto 1 + \mathsf{fma}\left(4 \cdot u, \frac{\color{blue}{\frac{1}{2}}}{v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right) \]
                            7. Step-by-step derivation
                              1. Applied rewrites56.8%

                                \[\leadsto 1 + \mathsf{fma}\left(u \cdot 4, \frac{\color{blue}{0.5}}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right) \]

                              if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

                              1. Initial program 99.9%

                                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                              2. Add Preprocessing
                              3. Taylor expanded in v around 0

                                \[\leadsto \color{blue}{1} \]
                              4. Step-by-step derivation
                                1. Applied rewrites90.0%

                                  \[\leadsto \color{blue}{1} \]
                              5. Recombined 2 regimes into one program.
                              6. Add Preprocessing

                              Alternative 8: 90.9% accurate, 0.9× speedup?

                              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;\mathsf{fma}\left(u, 2 + \frac{2}{v}, -1\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
                              (FPCore (u v)
                               :precision binary32
                               (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
                                 (fma u (+ 2.0 (/ 2.0 v)) -1.0)
                                 1.0))
                              float code(float u, float v) {
                              	float tmp;
                              	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
                              		tmp = fmaf(u, (2.0f + (2.0f / v)), -1.0f);
                              	} else {
                              		tmp = 1.0f;
                              	}
                              	return tmp;
                              }
                              
                              function code(u, v)
                              	tmp = Float32(0.0)
                              	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
                              		tmp = fma(u, Float32(Float32(2.0) + Float32(Float32(2.0) / v)), Float32(-1.0));
                              	else
                              		tmp = Float32(1.0);
                              	end
                              	return tmp
                              end
                              
                              \begin{array}{l}
                              
                              \\
                              \begin{array}{l}
                              \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
                              \;\;\;\;\mathsf{fma}\left(u, 2 + \frac{2}{v}, -1\right)\\
                              
                              \mathbf{else}:\\
                              \;\;\;\;1\\
                              
                              
                              \end{array}
                              \end{array}
                              
                              Derivation
                              1. Split input into 2 regimes
                              2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

                                1. Initial program 94.2%

                                  \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                2. Add Preprocessing
                                3. Taylor expanded in u around 0

                                  \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) - 1} \]
                                4. Step-by-step derivation
                                  1. sub-negN/A

                                    \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) + \left(\mathsf{neg}\left(1\right)\right)} \]
                                  2. associate-*r*N/A

                                    \[\leadsto \color{blue}{\left(u \cdot v\right) \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                                  3. *-commutativeN/A

                                    \[\leadsto \color{blue}{\left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                                  4. metadata-evalN/A

                                    \[\leadsto \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right) + \color{blue}{-1} \]
                                  5. lower-fma.f32N/A

                                    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{e^{\frac{-2}{v}}} - 1, u \cdot v, -1\right)} \]
                                  6. rec-expN/A

                                    \[\leadsto \mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(\frac{-2}{v}\right)}} - 1, u \cdot v, -1\right) \]
                                  7. distribute-neg-fracN/A

                                    \[\leadsto \mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(-2\right)}{v}}} - 1, u \cdot v, -1\right) \]
                                  8. metadata-evalN/A

                                    \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2}}{v}} - 1, u \cdot v, -1\right) \]
                                  9. metadata-evalN/A

                                    \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2 \cdot 1}}{v}} - 1, u \cdot v, -1\right) \]
                                  10. associate-*r/N/A

                                    \[\leadsto \mathsf{fma}\left(e^{\color{blue}{2 \cdot \frac{1}{v}}} - 1, u \cdot v, -1\right) \]
                                  11. lower-expm1.f32N/A

                                    \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{expm1}\left(2 \cdot \frac{1}{v}\right)}, u \cdot v, -1\right) \]
                                  12. associate-*r/N/A

                                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right), u \cdot v, -1\right) \]
                                  13. metadata-evalN/A

                                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{\color{blue}{2}}{v}\right), u \cdot v, -1\right) \]
                                  14. lower-/.f32N/A

                                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2}{v}}\right), u \cdot v, -1\right) \]
                                  15. *-commutativeN/A

                                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                                  16. lower-*.f3266.9

                                    \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                                5. Applied rewrites66.9%

                                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), v \cdot u, -1\right)} \]
                                6. Taylor expanded in v around inf

                                  \[\leadsto \left(2 \cdot u + 2 \cdot \frac{u}{v}\right) - \color{blue}{1} \]
                                7. Step-by-step derivation
                                  1. Applied rewrites56.7%

                                    \[\leadsto \mathsf{fma}\left(u, \color{blue}{2 + \frac{2}{v}}, -1\right) \]

                                  if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

                                  1. Initial program 99.9%

                                    \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                  2. Add Preprocessing
                                  3. Taylor expanded in v around 0

                                    \[\leadsto \color{blue}{1} \]
                                  4. Step-by-step derivation
                                    1. Applied rewrites90.0%

                                      \[\leadsto \color{blue}{1} \]
                                  5. Recombined 2 regimes into one program.
                                  6. Add Preprocessing

                                  Alternative 9: 90.9% accurate, 0.9× speedup?

                                  \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\ \;\;\;\;\mathsf{fma}\left(2, u + \frac{u}{v}, -1\right)\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
                                  (FPCore (u v)
                                   :precision binary32
                                   (if (<= (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v)))))) -1.0)
                                     (fma 2.0 (+ u (/ u v)) -1.0)
                                     1.0))
                                  float code(float u, float v) {
                                  	float tmp;
                                  	if ((v * logf((u + ((1.0f - u) * expf((-2.0f / v)))))) <= -1.0f) {
                                  		tmp = fmaf(2.0f, (u + (u / v)), -1.0f);
                                  	} else {
                                  		tmp = 1.0f;
                                  	}
                                  	return tmp;
                                  }
                                  
                                  function code(u, v)
                                  	tmp = Float32(0.0)
                                  	if (Float32(v * log(Float32(u + Float32(Float32(Float32(1.0) - u) * exp(Float32(Float32(-2.0) / v)))))) <= Float32(-1.0))
                                  		tmp = fma(Float32(2.0), Float32(u + Float32(u / v)), Float32(-1.0));
                                  	else
                                  		tmp = Float32(1.0);
                                  	end
                                  	return tmp
                                  end
                                  
                                  \begin{array}{l}
                                  
                                  \\
                                  \begin{array}{l}
                                  \mathbf{if}\;v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \leq -1:\\
                                  \;\;\;\;\mathsf{fma}\left(2, u + \frac{u}{v}, -1\right)\\
                                  
                                  \mathbf{else}:\\
                                  \;\;\;\;1\\
                                  
                                  
                                  \end{array}
                                  \end{array}
                                  
                                  Derivation
                                  1. Split input into 2 regimes
                                  2. if (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v)))))) < -1

                                    1. Initial program 94.2%

                                      \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                    2. Add Preprocessing
                                    3. Taylor expanded in u around 0

                                      \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) - 1} \]
                                    4. Step-by-step derivation
                                      1. sub-negN/A

                                        \[\leadsto \color{blue}{u \cdot \left(v \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)\right) + \left(\mathsf{neg}\left(1\right)\right)} \]
                                      2. associate-*r*N/A

                                        \[\leadsto \color{blue}{\left(u \cdot v\right) \cdot \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                                      3. *-commutativeN/A

                                        \[\leadsto \color{blue}{\left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right)} + \left(\mathsf{neg}\left(1\right)\right) \]
                                      4. metadata-evalN/A

                                        \[\leadsto \left(\frac{1}{e^{\frac{-2}{v}}} - 1\right) \cdot \left(u \cdot v\right) + \color{blue}{-1} \]
                                      5. lower-fma.f32N/A

                                        \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{e^{\frac{-2}{v}}} - 1, u \cdot v, -1\right)} \]
                                      6. rec-expN/A

                                        \[\leadsto \mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(\frac{-2}{v}\right)}} - 1, u \cdot v, -1\right) \]
                                      7. distribute-neg-fracN/A

                                        \[\leadsto \mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(-2\right)}{v}}} - 1, u \cdot v, -1\right) \]
                                      8. metadata-evalN/A

                                        \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2}}{v}} - 1, u \cdot v, -1\right) \]
                                      9. metadata-evalN/A

                                        \[\leadsto \mathsf{fma}\left(e^{\frac{\color{blue}{2 \cdot 1}}{v}} - 1, u \cdot v, -1\right) \]
                                      10. associate-*r/N/A

                                        \[\leadsto \mathsf{fma}\left(e^{\color{blue}{2 \cdot \frac{1}{v}}} - 1, u \cdot v, -1\right) \]
                                      11. lower-expm1.f32N/A

                                        \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{expm1}\left(2 \cdot \frac{1}{v}\right)}, u \cdot v, -1\right) \]
                                      12. associate-*r/N/A

                                        \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right), u \cdot v, -1\right) \]
                                      13. metadata-evalN/A

                                        \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{\color{blue}{2}}{v}\right), u \cdot v, -1\right) \]
                                      14. lower-/.f32N/A

                                        \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\color{blue}{\frac{2}{v}}\right), u \cdot v, -1\right) \]
                                      15. *-commutativeN/A

                                        \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                                      16. lower-*.f3266.9

                                        \[\leadsto \mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), \color{blue}{v \cdot u}, -1\right) \]
                                    5. Applied rewrites66.9%

                                      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{expm1}\left(\frac{2}{v}\right), v \cdot u, -1\right)} \]
                                    6. Taylor expanded in v around inf

                                      \[\leadsto \left(\frac{4}{3} \cdot \frac{u}{{v}^{2}} + \left(2 \cdot u + 2 \cdot \frac{u}{v}\right)\right) - \color{blue}{1} \]
                                    7. Step-by-step derivation
                                      1. Applied rewrites61.4%

                                        \[\leadsto \mathsf{fma}\left(u, \color{blue}{2 + \frac{2}{v}}, \mathsf{fma}\left(u, \frac{1.3333333333333333}{v \cdot v}, -1\right)\right) \]
                                      2. Taylor expanded in v around inf

                                        \[\leadsto \left(2 \cdot u + 2 \cdot \frac{u}{v}\right) - \color{blue}{1} \]
                                      3. Step-by-step derivation
                                        1. Applied rewrites56.7%

                                          \[\leadsto \mathsf{fma}\left(2, \color{blue}{u + \frac{u}{v}}, -1\right) \]

                                        if -1 < (*.f32 v (log.f32 (+.f32 u (*.f32 (-.f32 #s(literal 1 binary32) u) (exp.f32 (/.f32 #s(literal -2 binary32) v))))))

                                        1. Initial program 99.9%

                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in v around 0

                                          \[\leadsto \color{blue}{1} \]
                                        4. Step-by-step derivation
                                          1. Applied rewrites90.0%

                                            \[\leadsto \color{blue}{1} \]
                                        5. Recombined 2 regimes into one program.
                                        6. Add Preprocessing

                                        Alternative 10: 99.5% accurate, 1.0× speedup?

                                        \[\begin{array}{l} \\ 1 + v \cdot \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right) \end{array} \]
                                        (FPCore (u v)
                                         :precision binary32
                                         (+ 1.0 (* v (log (fma (exp (/ -2.0 v)) (- 1.0 u) u)))))
                                        float code(float u, float v) {
                                        	return 1.0f + (v * logf(fmaf(expf((-2.0f / v)), (1.0f - u), u)));
                                        }
                                        
                                        function code(u, v)
                                        	return Float32(Float32(1.0) + Float32(v * log(fma(exp(Float32(Float32(-2.0) / v)), Float32(Float32(1.0) - u), u))))
                                        end
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        1 + v \cdot \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)
                                        \end{array}
                                        
                                        Derivation
                                        1. Initial program 99.6%

                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in u around 0

                                          \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
                                        4. Step-by-step derivation
                                          1. +-commutativeN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
                                          2. distribute-rgt-inN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
                                          3. *-lft-identityN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
                                          4. associate-+r+N/A

                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
                                          5. *-rgt-identityN/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
                                          6. *-commutativeN/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
                                          7. associate-*l*N/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
                                          8. distribute-lft-inN/A

                                            \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
                                          9. neg-mul-1N/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
                                          10. sub-negN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
                                          11. lower-fma.f32N/A

                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                        5. Applied rewrites99.6%

                                          \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                        6. Add Preprocessing

                                        Alternative 11: 99.5% accurate, 1.0× speedup?

                                        \[\begin{array}{l} \\ \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right), 1\right) \end{array} \]
                                        (FPCore (u v)
                                         :precision binary32
                                         (fma v (log (fma (exp (/ -2.0 v)) (- 1.0 u) u)) 1.0))
                                        float code(float u, float v) {
                                        	return fmaf(v, logf(fmaf(expf((-2.0f / v)), (1.0f - u), u)), 1.0f);
                                        }
                                        
                                        function code(u, v)
                                        	return fma(v, log(fma(exp(Float32(Float32(-2.0) / v)), Float32(Float32(1.0) - u), u)), Float32(1.0))
                                        end
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right), 1\right)
                                        \end{array}
                                        
                                        Derivation
                                        1. Initial program 99.6%

                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in v around 0

                                          \[\leadsto \color{blue}{1 + v \cdot \log \left(u + e^{\frac{-2}{v}} \cdot \left(1 - u\right)\right)} \]
                                        4. Step-by-step derivation
                                          1. +-commutativeN/A

                                            \[\leadsto \color{blue}{v \cdot \log \left(u + e^{\frac{-2}{v}} \cdot \left(1 - u\right)\right) + 1} \]
                                          2. lower-fma.f32N/A

                                            \[\leadsto \color{blue}{\mathsf{fma}\left(v, \log \left(u + e^{\frac{-2}{v}} \cdot \left(1 - u\right)\right), 1\right)} \]
                                          3. lower-log.f32N/A

                                            \[\leadsto \mathsf{fma}\left(v, \color{blue}{\log \left(u + e^{\frac{-2}{v}} \cdot \left(1 - u\right)\right)}, 1\right) \]
                                          4. +-commutativeN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \color{blue}{\left(e^{\frac{-2}{v}} \cdot \left(1 - u\right) + u\right)}, 1\right) \]
                                          5. lower-fma.f32N/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)}, 1\right) \]
                                          6. metadata-evalN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{\color{blue}{\mathsf{neg}\left(2\right)}}{v}}, 1 - u, u\right)\right), 1\right) \]
                                          7. distribute-neg-fracN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\color{blue}{\mathsf{neg}\left(\frac{2}{v}\right)}}, 1 - u, u\right)\right), 1\right) \]
                                          8. metadata-evalN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\mathsf{neg}\left(\frac{\color{blue}{2 \cdot 1}}{v}\right)}, 1 - u, u\right)\right), 1\right) \]
                                          9. associate-*r/N/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\mathsf{neg}\left(\color{blue}{2 \cdot \frac{1}{v}}\right)}, 1 - u, u\right)\right), 1\right) \]
                                          10. lower-exp.f32N/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(\color{blue}{e^{\mathsf{neg}\left(2 \cdot \frac{1}{v}\right)}}, 1 - u, u\right)\right), 1\right) \]
                                          11. associate-*r/N/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\mathsf{neg}\left(\color{blue}{\frac{2 \cdot 1}{v}}\right)}, 1 - u, u\right)\right), 1\right) \]
                                          12. metadata-evalN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\mathsf{neg}\left(\frac{\color{blue}{2}}{v}\right)}, 1 - u, u\right)\right), 1\right) \]
                                          13. distribute-neg-fracN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\color{blue}{\frac{\mathsf{neg}\left(2\right)}{v}}}, 1 - u, u\right)\right), 1\right) \]
                                          14. metadata-evalN/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{\color{blue}{-2}}{v}}, 1 - u, u\right)\right), 1\right) \]
                                          15. lower-/.f32N/A

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\color{blue}{\frac{-2}{v}}}, 1 - u, u\right)\right), 1\right) \]
                                          16. lower--.f3299.6

                                            \[\leadsto \mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, \color{blue}{1 - u}, u\right)\right), 1\right) \]
                                        5. Applied rewrites99.6%

                                          \[\leadsto \color{blue}{\mathsf{fma}\left(v, \log \left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right), 1\right)} \]
                                        6. Add Preprocessing

                                        Alternative 12: 95.4% accurate, 1.4× speedup?

                                        \[\begin{array}{l} \\ 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 - \frac{-2 + \frac{-2 + \frac{-1.3333333333333333}{v}}{v}}{v}}, 1 - u, u\right)\right) \end{array} \]
                                        (FPCore (u v)
                                         :precision binary32
                                         (+
                                          1.0
                                          (*
                                           v
                                           (log
                                            (fma
                                             (/ 1.0 (- 1.0 (/ (+ -2.0 (/ (+ -2.0 (/ -1.3333333333333333 v)) v)) v)))
                                             (- 1.0 u)
                                             u)))))
                                        float code(float u, float v) {
                                        	return 1.0f + (v * logf(fmaf((1.0f / (1.0f - ((-2.0f + ((-2.0f + (-1.3333333333333333f / v)) / v)) / v))), (1.0f - u), u)));
                                        }
                                        
                                        function code(u, v)
                                        	return Float32(Float32(1.0) + Float32(v * log(fma(Float32(Float32(1.0) / Float32(Float32(1.0) - Float32(Float32(Float32(-2.0) + Float32(Float32(Float32(-2.0) + Float32(Float32(-1.3333333333333333) / v)) / v)) / v))), Float32(Float32(1.0) - u), u))))
                                        end
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 - \frac{-2 + \frac{-2 + \frac{-1.3333333333333333}{v}}{v}}{v}}, 1 - u, u\right)\right)
                                        \end{array}
                                        
                                        Derivation
                                        1. Initial program 99.6%

                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in u around 0

                                          \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
                                        4. Step-by-step derivation
                                          1. +-commutativeN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
                                          2. distribute-rgt-inN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
                                          3. *-lft-identityN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
                                          4. associate-+r+N/A

                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
                                          5. *-rgt-identityN/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
                                          6. *-commutativeN/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
                                          7. associate-*l*N/A

                                            \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
                                          8. distribute-lft-inN/A

                                            \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
                                          9. neg-mul-1N/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
                                          10. sub-negN/A

                                            \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
                                          11. lower-fma.f32N/A

                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                        5. Applied rewrites99.6%

                                          \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                        6. Step-by-step derivation
                                          1. Applied rewrites99.6%

                                            \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, \color{blue}{1} - u, u\right)\right) \]
                                          2. Taylor expanded in v around -inf

                                            \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + -1 \cdot \frac{-1 \cdot \frac{2 + \frac{4}{3} \cdot \frac{1}{v}}{v} - 2}{v}}, 1 - u, u\right)\right) \]
                                          3. Step-by-step derivation
                                            1. Applied rewrites94.8%

                                              \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 - \frac{-2 + \frac{-2 + \frac{-1.3333333333333333}{v}}{v}}{v}}, 1 - u, u\right)\right) \]
                                            2. Add Preprocessing

                                            Alternative 13: 95.7% accurate, 1.5× speedup?

                                            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v \cdot v}}, 1 - u, u\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}\\ \end{array} \end{array} \]
                                            (FPCore (u v)
                                             :precision binary32
                                             (if (<= v 0.30000001192092896)
                                               (+ 1.0 (* v (log (fma (/ 1.0 (+ 1.0 (/ 2.0 (* v v)))) (- 1.0 u) u))))
                                               (-
                                                (fma u 2.0 -1.0)
                                                (/
                                                 (fma
                                                  (fma
                                                   (- 1.0 u)
                                                   8.0
                                                   (fma
                                                    (- 1.0 u)
                                                    (* (* (- 1.0 u) (- 1.0 u)) 16.0)
                                                    (* (- 1.0 u) (* (- 1.0 u) -24.0))))
                                                  (/ 0.16666666666666666 v)
                                                  (* -0.5 (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0))))
                                                 v))))
                                            float code(float u, float v) {
                                            	float tmp;
                                            	if (v <= 0.30000001192092896f) {
                                            		tmp = 1.0f + (v * logf(fmaf((1.0f / (1.0f + (2.0f / (v * v)))), (1.0f - u), u)));
                                            	} else {
                                            		tmp = fmaf(u, 2.0f, -1.0f) - (fmaf(fmaf((1.0f - u), 8.0f, fmaf((1.0f - u), (((1.0f - u) * (1.0f - u)) * 16.0f), ((1.0f - u) * ((1.0f - u) * -24.0f)))), (0.16666666666666666f / v), (-0.5f * ((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)))) / v);
                                            	}
                                            	return tmp;
                                            }
                                            
                                            function code(u, v)
                                            	tmp = Float32(0.0)
                                            	if (v <= Float32(0.30000001192092896))
                                            		tmp = Float32(Float32(1.0) + Float32(v * log(fma(Float32(Float32(1.0) / Float32(Float32(1.0) + Float32(Float32(2.0) / Float32(v * v)))), Float32(Float32(1.0) - u), u))));
                                            	else
                                            		tmp = Float32(fma(u, Float32(2.0), Float32(-1.0)) - Float32(fma(fma(Float32(Float32(1.0) - u), Float32(8.0), fma(Float32(Float32(1.0) - u), Float32(Float32(Float32(Float32(1.0) - u) * Float32(Float32(1.0) - u)) * Float32(16.0)), Float32(Float32(Float32(1.0) - u) * Float32(Float32(Float32(1.0) - u) * Float32(-24.0))))), Float32(Float32(0.16666666666666666) / v), Float32(Float32(-0.5) * Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))))) / v));
                                            	end
                                            	return tmp
                                            end
                                            
                                            \begin{array}{l}
                                            
                                            \\
                                            \begin{array}{l}
                                            \mathbf{if}\;v \leq 0.30000001192092896:\\
                                            \;\;\;\;1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v \cdot v}}, 1 - u, u\right)\right)\\
                                            
                                            \mathbf{else}:\\
                                            \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}\\
                                            
                                            
                                            \end{array}
                                            \end{array}
                                            
                                            Derivation
                                            1. Split input into 2 regimes
                                            2. if v < 0.300000012

                                              1. Initial program 100.0%

                                                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                              2. Add Preprocessing
                                              3. Taylor expanded in u around 0

                                                \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
                                              4. Step-by-step derivation
                                                1. +-commutativeN/A

                                                  \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
                                                2. distribute-rgt-inN/A

                                                  \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
                                                3. *-lft-identityN/A

                                                  \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
                                                4. associate-+r+N/A

                                                  \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
                                                5. *-rgt-identityN/A

                                                  \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
                                                6. *-commutativeN/A

                                                  \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
                                                7. associate-*l*N/A

                                                  \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
                                                8. distribute-lft-inN/A

                                                  \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
                                                9. neg-mul-1N/A

                                                  \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
                                                10. sub-negN/A

                                                  \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
                                                11. lower-fma.f32N/A

                                                  \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                              5. Applied rewrites100.0%

                                                \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                              6. Step-by-step derivation
                                                1. Applied rewrites100.0%

                                                  \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, \color{blue}{1} - u, u\right)\right) \]
                                                2. Taylor expanded in v around inf

                                                  \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \left(2 \cdot \frac{1}{v} + \frac{2}{{v}^{2}}\right)}, 1 - u, u\right)\right) \]
                                                3. Step-by-step derivation
                                                  1. Applied rewrites97.0%

                                                    \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \left(\frac{2}{v} + \frac{2}{v \cdot v}\right)}, 1 - u, u\right)\right) \]
                                                  2. Taylor expanded in v around 0

                                                    \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{{v}^{2}}}, 1 - u, u\right)\right) \]
                                                  3. Step-by-step derivation
                                                    1. Applied rewrites97.0%

                                                      \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v \cdot v}}, 1 - u, u\right)\right) \]

                                                    if 0.300000012 < v

                                                    1. Initial program 94.3%

                                                      \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                    2. Add Preprocessing
                                                    3. Taylor expanded in u around 0

                                                      \[\leadsto \color{blue}{-1} \]
                                                    4. Step-by-step derivation
                                                      1. Applied rewrites39.8%

                                                        \[\leadsto \color{blue}{-1} \]
                                                      2. Taylor expanded in v around -inf

                                                        \[\leadsto \color{blue}{1 + \left(-2 \cdot \left(1 - u\right) + -1 \cdot \frac{\frac{-1}{2} \cdot \left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) + \frac{1}{6} \cdot \frac{-24 \cdot {\left(1 - u\right)}^{2} + \left(8 \cdot \left(1 - u\right) + 16 \cdot {\left(1 - u\right)}^{3}\right)}{v}}{v}\right)} \]
                                                      3. Applied rewrites66.5%

                                                        \[\leadsto \color{blue}{\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}} \]
                                                    5. Recombined 2 regimes into one program.
                                                    6. Add Preprocessing

                                                    Alternative 14: 93.9% accurate, 1.5× speedup?

                                                    \[\begin{array}{l} \\ 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{\mathsf{fma}\left(v, 2, 2\right)}{v \cdot v}}, 1 - u, u\right)\right) \end{array} \]
                                                    (FPCore (u v)
                                                     :precision binary32
                                                     (+
                                                      1.0
                                                      (* v (log (fma (/ 1.0 (+ 1.0 (/ (fma v 2.0 2.0) (* v v)))) (- 1.0 u) u)))))
                                                    float code(float u, float v) {
                                                    	return 1.0f + (v * logf(fmaf((1.0f / (1.0f + (fmaf(v, 2.0f, 2.0f) / (v * v)))), (1.0f - u), u)));
                                                    }
                                                    
                                                    function code(u, v)
                                                    	return Float32(Float32(1.0) + Float32(v * log(fma(Float32(Float32(1.0) / Float32(Float32(1.0) + Float32(fma(v, Float32(2.0), Float32(2.0)) / Float32(v * v)))), Float32(Float32(1.0) - u), u))))
                                                    end
                                                    
                                                    \begin{array}{l}
                                                    
                                                    \\
                                                    1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{\mathsf{fma}\left(v, 2, 2\right)}{v \cdot v}}, 1 - u, u\right)\right)
                                                    \end{array}
                                                    
                                                    Derivation
                                                    1. Initial program 99.6%

                                                      \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                    2. Add Preprocessing
                                                    3. Taylor expanded in u around 0

                                                      \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
                                                    4. Step-by-step derivation
                                                      1. +-commutativeN/A

                                                        \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
                                                      2. distribute-rgt-inN/A

                                                        \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
                                                      3. *-lft-identityN/A

                                                        \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
                                                      4. associate-+r+N/A

                                                        \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
                                                      5. *-rgt-identityN/A

                                                        \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
                                                      6. *-commutativeN/A

                                                        \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
                                                      7. associate-*l*N/A

                                                        \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
                                                      8. distribute-lft-inN/A

                                                        \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
                                                      9. neg-mul-1N/A

                                                        \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
                                                      10. sub-negN/A

                                                        \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
                                                      11. lower-fma.f32N/A

                                                        \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                                    5. Applied rewrites99.6%

                                                      \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                                    6. Step-by-step derivation
                                                      1. Applied rewrites99.6%

                                                        \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, \color{blue}{1} - u, u\right)\right) \]
                                                      2. Taylor expanded in v around inf

                                                        \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \left(2 \cdot \frac{1}{v} + \frac{2}{{v}^{2}}\right)}, 1 - u, u\right)\right) \]
                                                      3. Step-by-step derivation
                                                        1. Applied rewrites93.0%

                                                          \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \left(\frac{2}{v} + \frac{2}{v \cdot v}\right)}, 1 - u, u\right)\right) \]
                                                        2. Taylor expanded in v around 0

                                                          \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2 + 2 \cdot v}{{v}^{2}}}, 1 - u, u\right)\right) \]
                                                        3. Step-by-step derivation
                                                          1. Applied rewrites93.0%

                                                            \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{\mathsf{fma}\left(v, 2, 2\right)}{v \cdot v}}, 1 - u, u\right)\right) \]
                                                          2. Add Preprocessing

                                                          Alternative 15: 91.4% accurate, 1.6× speedup?

                                                          \[\begin{array}{l} \\ 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v}}, 1 - u, u\right)\right) \end{array} \]
                                                          (FPCore (u v)
                                                           :precision binary32
                                                           (+ 1.0 (* v (log (fma (/ 1.0 (+ 1.0 (/ 2.0 v))) (- 1.0 u) u)))))
                                                          float code(float u, float v) {
                                                          	return 1.0f + (v * logf(fmaf((1.0f / (1.0f + (2.0f / v))), (1.0f - u), u)));
                                                          }
                                                          
                                                          function code(u, v)
                                                          	return Float32(Float32(1.0) + Float32(v * log(fma(Float32(Float32(1.0) / Float32(Float32(1.0) + Float32(Float32(2.0) / v))), Float32(Float32(1.0) - u), u))))
                                                          end
                                                          
                                                          \begin{array}{l}
                                                          
                                                          \\
                                                          1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v}}, 1 - u, u\right)\right)
                                                          \end{array}
                                                          
                                                          Derivation
                                                          1. Initial program 99.6%

                                                            \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                          2. Add Preprocessing
                                                          3. Taylor expanded in u around 0

                                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(e^{\frac{-2}{v}} + u \cdot \left(1 + -1 \cdot e^{\frac{-2}{v}}\right)\right)} \]
                                                          4. Step-by-step derivation
                                                            1. +-commutativeN/A

                                                              \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + u \cdot \color{blue}{\left(-1 \cdot e^{\frac{-2}{v}} + 1\right)}\right) \]
                                                            2. distribute-rgt-inN/A

                                                              \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \color{blue}{\left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + 1 \cdot u\right)}\right) \]
                                                            3. *-lft-identityN/A

                                                              \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} + \left(\left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u + \color{blue}{u}\right)\right) \]
                                                            4. associate-+r+N/A

                                                              \[\leadsto 1 + v \cdot \log \color{blue}{\left(\left(e^{\frac{-2}{v}} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right)} \]
                                                            5. *-rgt-identityN/A

                                                              \[\leadsto 1 + v \cdot \log \left(\left(\color{blue}{e^{\frac{-2}{v}} \cdot 1} + \left(-1 \cdot e^{\frac{-2}{v}}\right) \cdot u\right) + u\right) \]
                                                            6. *-commutativeN/A

                                                              \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{\left(e^{\frac{-2}{v}} \cdot -1\right)} \cdot u\right) + u\right) \]
                                                            7. associate-*l*N/A

                                                              \[\leadsto 1 + v \cdot \log \left(\left(e^{\frac{-2}{v}} \cdot 1 + \color{blue}{e^{\frac{-2}{v}} \cdot \left(-1 \cdot u\right)}\right) + u\right) \]
                                                            8. distribute-lft-inN/A

                                                              \[\leadsto 1 + v \cdot \log \left(\color{blue}{e^{\frac{-2}{v}} \cdot \left(1 + -1 \cdot u\right)} + u\right) \]
                                                            9. neg-mul-1N/A

                                                              \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \left(1 + \color{blue}{\left(\mathsf{neg}\left(u\right)\right)}\right) + u\right) \]
                                                            10. sub-negN/A

                                                              \[\leadsto 1 + v \cdot \log \left(e^{\frac{-2}{v}} \cdot \color{blue}{\left(1 - u\right)} + u\right) \]
                                                            11. lower-fma.f32N/A

                                                              \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                                          5. Applied rewrites99.6%

                                                            \[\leadsto 1 + v \cdot \log \color{blue}{\left(\mathsf{fma}\left(e^{\frac{-2}{v}}, 1 - u, u\right)\right)} \]
                                                          6. Step-by-step derivation
                                                            1. Applied rewrites99.6%

                                                              \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{e^{\frac{2}{v}}}, \color{blue}{1} - u, u\right)\right) \]
                                                            2. Taylor expanded in v around inf

                                                              \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + 2 \cdot \frac{1}{v}}, 1 - u, u\right)\right) \]
                                                            3. Step-by-step derivation
                                                              1. Applied rewrites89.4%

                                                                \[\leadsto 1 + v \cdot \log \left(\mathsf{fma}\left(\frac{1}{1 + \frac{2}{v}}, 1 - u, u\right)\right) \]
                                                              2. Add Preprocessing

                                                              Alternative 16: 91.3% accurate, 2.0× speedup?

                                                              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}\\ \end{array} \end{array} \]
                                                              (FPCore (u v)
                                                               :precision binary32
                                                               (if (<= v 0.30000001192092896)
                                                                 1.0
                                                                 (-
                                                                  (fma u 2.0 -1.0)
                                                                  (/
                                                                   (fma
                                                                    (fma
                                                                     (- 1.0 u)
                                                                     8.0
                                                                     (fma
                                                                      (- 1.0 u)
                                                                      (* (* (- 1.0 u) (- 1.0 u)) 16.0)
                                                                      (* (- 1.0 u) (* (- 1.0 u) -24.0))))
                                                                    (/ 0.16666666666666666 v)
                                                                    (* -0.5 (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0))))
                                                                   v))))
                                                              float code(float u, float v) {
                                                              	float tmp;
                                                              	if (v <= 0.30000001192092896f) {
                                                              		tmp = 1.0f;
                                                              	} else {
                                                              		tmp = fmaf(u, 2.0f, -1.0f) - (fmaf(fmaf((1.0f - u), 8.0f, fmaf((1.0f - u), (((1.0f - u) * (1.0f - u)) * 16.0f), ((1.0f - u) * ((1.0f - u) * -24.0f)))), (0.16666666666666666f / v), (-0.5f * ((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)))) / v);
                                                              	}
                                                              	return tmp;
                                                              }
                                                              
                                                              function code(u, v)
                                                              	tmp = Float32(0.0)
                                                              	if (v <= Float32(0.30000001192092896))
                                                              		tmp = Float32(1.0);
                                                              	else
                                                              		tmp = Float32(fma(u, Float32(2.0), Float32(-1.0)) - Float32(fma(fma(Float32(Float32(1.0) - u), Float32(8.0), fma(Float32(Float32(1.0) - u), Float32(Float32(Float32(Float32(1.0) - u) * Float32(Float32(1.0) - u)) * Float32(16.0)), Float32(Float32(Float32(1.0) - u) * Float32(Float32(Float32(1.0) - u) * Float32(-24.0))))), Float32(Float32(0.16666666666666666) / v), Float32(Float32(-0.5) * Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))))) / v));
                                                              	end
                                                              	return tmp
                                                              end
                                                              
                                                              \begin{array}{l}
                                                              
                                                              \\
                                                              \begin{array}{l}
                                                              \mathbf{if}\;v \leq 0.30000001192092896:\\
                                                              \;\;\;\;1\\
                                                              
                                                              \mathbf{else}:\\
                                                              \;\;\;\;\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}\\
                                                              
                                                              
                                                              \end{array}
                                                              \end{array}
                                                              
                                                              Derivation
                                                              1. Split input into 2 regimes
                                                              2. if v < 0.300000012

                                                                1. Initial program 100.0%

                                                                  \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                2. Add Preprocessing
                                                                3. Taylor expanded in v around 0

                                                                  \[\leadsto \color{blue}{1} \]
                                                                4. Step-by-step derivation
                                                                  1. Applied rewrites90.2%

                                                                    \[\leadsto \color{blue}{1} \]

                                                                  if 0.300000012 < v

                                                                  1. Initial program 94.3%

                                                                    \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                  2. Add Preprocessing
                                                                  3. Taylor expanded in u around 0

                                                                    \[\leadsto \color{blue}{-1} \]
                                                                  4. Step-by-step derivation
                                                                    1. Applied rewrites39.8%

                                                                      \[\leadsto \color{blue}{-1} \]
                                                                    2. Taylor expanded in v around -inf

                                                                      \[\leadsto \color{blue}{1 + \left(-2 \cdot \left(1 - u\right) + -1 \cdot \frac{\frac{-1}{2} \cdot \left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) + \frac{1}{6} \cdot \frac{-24 \cdot {\left(1 - u\right)}^{2} + \left(8 \cdot \left(1 - u\right) + 16 \cdot {\left(1 - u\right)}^{3}\right)}{v}}{v}\right)} \]
                                                                    3. Applied rewrites66.5%

                                                                      \[\leadsto \color{blue}{\mathsf{fma}\left(u, 2, -1\right) - \frac{\mathsf{fma}\left(\mathsf{fma}\left(1 - u, 8, \mathsf{fma}\left(1 - u, \left(\left(1 - u\right) \cdot \left(1 - u\right)\right) \cdot 16, \left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -24\right)\right)\right), \frac{0.16666666666666666}{v}, -0.5 \cdot \left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)\right)\right)}{v}} \]
                                                                  5. Recombined 2 regimes into one program.
                                                                  6. Add Preprocessing

                                                                  Alternative 17: 91.3% accurate, 2.2× speedup?

                                                                  \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-2, 1 - u, 1\right) - \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), -0.5, \frac{0.16666666666666666}{v} \cdot \mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, 16, -24\right), \mathsf{fma}\left(8, -u, 8\right)\right)\right)}{v}\\ \end{array} \end{array} \]
                                                                  (FPCore (u v)
                                                                   :precision binary32
                                                                   (if (<= v 0.30000001192092896)
                                                                     1.0
                                                                     (-
                                                                      (fma -2.0 (- 1.0 u) 1.0)
                                                                      (/
                                                                       (fma
                                                                        (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0))
                                                                        -0.5
                                                                        (*
                                                                         (/ 0.16666666666666666 v)
                                                                         (fma
                                                                          (* (- 1.0 u) (- 1.0 u))
                                                                          (fma (- 1.0 u) 16.0 -24.0)
                                                                          (fma 8.0 (- u) 8.0))))
                                                                       v))))
                                                                  float code(float u, float v) {
                                                                  	float tmp;
                                                                  	if (v <= 0.30000001192092896f) {
                                                                  		tmp = 1.0f;
                                                                  	} else {
                                                                  		tmp = fmaf(-2.0f, (1.0f - u), 1.0f) - (fmaf(((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)), -0.5f, ((0.16666666666666666f / v) * fmaf(((1.0f - u) * (1.0f - u)), fmaf((1.0f - u), 16.0f, -24.0f), fmaf(8.0f, -u, 8.0f)))) / v);
                                                                  	}
                                                                  	return tmp;
                                                                  }
                                                                  
                                                                  function code(u, v)
                                                                  	tmp = Float32(0.0)
                                                                  	if (v <= Float32(0.30000001192092896))
                                                                  		tmp = Float32(1.0);
                                                                  	else
                                                                  		tmp = Float32(fma(Float32(-2.0), Float32(Float32(1.0) - u), Float32(1.0)) - Float32(fma(Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))), Float32(-0.5), Float32(Float32(Float32(0.16666666666666666) / v) * fma(Float32(Float32(Float32(1.0) - u) * Float32(Float32(1.0) - u)), fma(Float32(Float32(1.0) - u), Float32(16.0), Float32(-24.0)), fma(Float32(8.0), Float32(-u), Float32(8.0))))) / v));
                                                                  	end
                                                                  	return tmp
                                                                  end
                                                                  
                                                                  \begin{array}{l}
                                                                  
                                                                  \\
                                                                  \begin{array}{l}
                                                                  \mathbf{if}\;v \leq 0.30000001192092896:\\
                                                                  \;\;\;\;1\\
                                                                  
                                                                  \mathbf{else}:\\
                                                                  \;\;\;\;\mathsf{fma}\left(-2, 1 - u, 1\right) - \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), -0.5, \frac{0.16666666666666666}{v} \cdot \mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, 16, -24\right), \mathsf{fma}\left(8, -u, 8\right)\right)\right)}{v}\\
                                                                  
                                                                  
                                                                  \end{array}
                                                                  \end{array}
                                                                  
                                                                  Derivation
                                                                  1. Split input into 2 regimes
                                                                  2. if v < 0.300000012

                                                                    1. Initial program 100.0%

                                                                      \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                    2. Add Preprocessing
                                                                    3. Taylor expanded in v around 0

                                                                      \[\leadsto \color{blue}{1} \]
                                                                    4. Step-by-step derivation
                                                                      1. Applied rewrites90.2%

                                                                        \[\leadsto \color{blue}{1} \]

                                                                      if 0.300000012 < v

                                                                      1. Initial program 94.3%

                                                                        \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                      2. Add Preprocessing
                                                                      3. Taylor expanded in v around -inf

                                                                        \[\leadsto \color{blue}{1 + \left(-2 \cdot \left(1 - u\right) + -1 \cdot \frac{\frac{-1}{2} \cdot \left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) + \frac{1}{6} \cdot \frac{-24 \cdot {\left(1 - u\right)}^{2} + \left(8 \cdot \left(1 - u\right) + 16 \cdot {\left(1 - u\right)}^{3}\right)}{v}}{v}\right)} \]
                                                                      4. Applied rewrites66.1%

                                                                        \[\leadsto \color{blue}{\mathsf{fma}\left(-2, 1 - u, 1\right) - \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), -0.5, \mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, 16, -24\right), \mathsf{fma}\left(8, -u, 8\right)\right) \cdot \frac{0.16666666666666666}{v}\right)}{v}} \]
                                                                    5. Recombined 2 regimes into one program.
                                                                    6. Final simplification88.5%

                                                                      \[\leadsto \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-2, 1 - u, 1\right) - \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), -0.5, \frac{0.16666666666666666}{v} \cdot \mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, 16, -24\right), \mathsf{fma}\left(8, -u, 8\right)\right)\right)}{v}\\ \end{array} \]
                                                                    7. Add Preprocessing

                                                                    Alternative 18: 91.3% accurate, 2.3× speedup?

                                                                    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;1 + \left(\mathsf{fma}\left(u, 2, -2\right) - \frac{\mathsf{fma}\left(-0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(u, 8, -8\right)\right)}{v}, \left(1 - u\right) \cdot \mathsf{fma}\left(-0.5, \left(1 - u\right) \cdot -4, -2\right)\right)}{v}\right)\\ \end{array} \end{array} \]
                                                                    (FPCore (u v)
                                                                     :precision binary32
                                                                     (if (<= v 0.30000001192092896)
                                                                       1.0
                                                                       (+
                                                                        1.0
                                                                        (-
                                                                         (fma u 2.0 -2.0)
                                                                         (/
                                                                          (fma
                                                                           -0.16666666666666666
                                                                           (/
                                                                            (fma
                                                                             (* (- 1.0 u) (- 1.0 u))
                                                                             (fma (- 1.0 u) -16.0 24.0)
                                                                             (fma u 8.0 -8.0))
                                                                            v)
                                                                           (* (- 1.0 u) (fma -0.5 (* (- 1.0 u) -4.0) -2.0)))
                                                                          v)))))
                                                                    float code(float u, float v) {
                                                                    	float tmp;
                                                                    	if (v <= 0.30000001192092896f) {
                                                                    		tmp = 1.0f;
                                                                    	} else {
                                                                    		tmp = 1.0f + (fmaf(u, 2.0f, -2.0f) - (fmaf(-0.16666666666666666f, (fmaf(((1.0f - u) * (1.0f - u)), fmaf((1.0f - u), -16.0f, 24.0f), fmaf(u, 8.0f, -8.0f)) / v), ((1.0f - u) * fmaf(-0.5f, ((1.0f - u) * -4.0f), -2.0f))) / v));
                                                                    	}
                                                                    	return tmp;
                                                                    }
                                                                    
                                                                    function code(u, v)
                                                                    	tmp = Float32(0.0)
                                                                    	if (v <= Float32(0.30000001192092896))
                                                                    		tmp = Float32(1.0);
                                                                    	else
                                                                    		tmp = Float32(Float32(1.0) + Float32(fma(u, Float32(2.0), Float32(-2.0)) - Float32(fma(Float32(-0.16666666666666666), Float32(fma(Float32(Float32(Float32(1.0) - u) * Float32(Float32(1.0) - u)), fma(Float32(Float32(1.0) - u), Float32(-16.0), Float32(24.0)), fma(u, Float32(8.0), Float32(-8.0))) / v), Float32(Float32(Float32(1.0) - u) * fma(Float32(-0.5), Float32(Float32(Float32(1.0) - u) * Float32(-4.0)), Float32(-2.0)))) / v)));
                                                                    	end
                                                                    	return tmp
                                                                    end
                                                                    
                                                                    \begin{array}{l}
                                                                    
                                                                    \\
                                                                    \begin{array}{l}
                                                                    \mathbf{if}\;v \leq 0.30000001192092896:\\
                                                                    \;\;\;\;1\\
                                                                    
                                                                    \mathbf{else}:\\
                                                                    \;\;\;\;1 + \left(\mathsf{fma}\left(u, 2, -2\right) - \frac{\mathsf{fma}\left(-0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(u, 8, -8\right)\right)}{v}, \left(1 - u\right) \cdot \mathsf{fma}\left(-0.5, \left(1 - u\right) \cdot -4, -2\right)\right)}{v}\right)\\
                                                                    
                                                                    
                                                                    \end{array}
                                                                    \end{array}
                                                                    
                                                                    Derivation
                                                                    1. Split input into 2 regimes
                                                                    2. if v < 0.300000012

                                                                      1. Initial program 100.0%

                                                                        \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                      2. Add Preprocessing
                                                                      3. Taylor expanded in v around 0

                                                                        \[\leadsto \color{blue}{1} \]
                                                                      4. Step-by-step derivation
                                                                        1. Applied rewrites90.2%

                                                                          \[\leadsto \color{blue}{1} \]

                                                                        if 0.300000012 < v

                                                                        1. Initial program 94.3%

                                                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                        2. Add Preprocessing
                                                                        3. Taylor expanded in v around inf

                                                                          \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \left(\frac{1}{6} \cdot \frac{-16 \cdot {\left(1 - u\right)}^{3} + \left(-8 \cdot \left(1 - u\right) + 24 \cdot {\left(1 - u\right)}^{2}\right)}{{v}^{2}} + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)\right)} \]
                                                                        4. Applied rewrites66.0%

                                                                          \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(-8, -u, -8\right)\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)} \]
                                                                        5. Taylor expanded in v around -inf

                                                                          \[\leadsto 1 + \left(\left(-1 \cdot \frac{\frac{-1}{2} \cdot \left(\left(4 + -4 \cdot \left(1 - u\right)\right) \cdot \left(1 - u\right)\right) + \frac{-1}{6} \cdot \frac{\left(8 \cdot u + \left(24 + -16 \cdot \left(1 - u\right)\right) \cdot {\left(1 - u\right)}^{2}\right) - 8}{v}}{v} + 2 \cdot u\right) - \color{blue}{2}\right) \]
                                                                        6. Applied rewrites66.3%

                                                                          \[\leadsto 1 + \left(\mathsf{fma}\left(u, 2, -2\right) + \color{blue}{\frac{\mathsf{fma}\left(-0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(u, 8, -8\right)\right)}{v}, \left(1 - u\right) \cdot \mathsf{fma}\left(-0.5, \left(1 - u\right) \cdot -4, -2\right)\right)}{-v}}\right) \]
                                                                      5. Recombined 2 regimes into one program.
                                                                      6. Final simplification88.5%

                                                                        \[\leadsto \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;1 + \left(\mathsf{fma}\left(u, 2, -2\right) - \frac{\mathsf{fma}\left(-0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(u, 8, -8\right)\right)}{v}, \left(1 - u\right) \cdot \mathsf{fma}\left(-0.5, \left(1 - u\right) \cdot -4, -2\right)\right)}{v}\right)\\ \end{array} \]
                                                                      7. Add Preprocessing

                                                                      Alternative 19: 91.3% accurate, 2.5× speedup?

                                                                      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, \mathsf{fma}\left(u, 16, -24\right), 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\ \end{array} \end{array} \]
                                                                      (FPCore (u v)
                                                                       :precision binary32
                                                                       (if (<= v 0.30000001192092896)
                                                                         1.0
                                                                         (+
                                                                          1.0
                                                                          (fma
                                                                           0.5
                                                                           (/ (* (- 1.0 u) (fma (- 1.0 u) -4.0 4.0)) v)
                                                                           (fma
                                                                            0.16666666666666666
                                                                            (/ (* u (fma u (fma u 16.0 -24.0) 8.0)) (* v v))
                                                                            (fma -2.0 (- u) -2.0))))))
                                                                      float code(float u, float v) {
                                                                      	float tmp;
                                                                      	if (v <= 0.30000001192092896f) {
                                                                      		tmp = 1.0f;
                                                                      	} else {
                                                                      		tmp = 1.0f + fmaf(0.5f, (((1.0f - u) * fmaf((1.0f - u), -4.0f, 4.0f)) / v), fmaf(0.16666666666666666f, ((u * fmaf(u, fmaf(u, 16.0f, -24.0f), 8.0f)) / (v * v)), fmaf(-2.0f, -u, -2.0f)));
                                                                      	}
                                                                      	return tmp;
                                                                      }
                                                                      
                                                                      function code(u, v)
                                                                      	tmp = Float32(0.0)
                                                                      	if (v <= Float32(0.30000001192092896))
                                                                      		tmp = Float32(1.0);
                                                                      	else
                                                                      		tmp = Float32(Float32(1.0) + fma(Float32(0.5), Float32(Float32(Float32(Float32(1.0) - u) * fma(Float32(Float32(1.0) - u), Float32(-4.0), Float32(4.0))) / v), fma(Float32(0.16666666666666666), Float32(Float32(u * fma(u, fma(u, Float32(16.0), Float32(-24.0)), Float32(8.0))) / Float32(v * v)), fma(Float32(-2.0), Float32(-u), Float32(-2.0)))));
                                                                      	end
                                                                      	return tmp
                                                                      end
                                                                      
                                                                      \begin{array}{l}
                                                                      
                                                                      \\
                                                                      \begin{array}{l}
                                                                      \mathbf{if}\;v \leq 0.30000001192092896:\\
                                                                      \;\;\;\;1\\
                                                                      
                                                                      \mathbf{else}:\\
                                                                      \;\;\;\;1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, \mathsf{fma}\left(u, 16, -24\right), 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)\\
                                                                      
                                                                      
                                                                      \end{array}
                                                                      \end{array}
                                                                      
                                                                      Derivation
                                                                      1. Split input into 2 regimes
                                                                      2. if v < 0.300000012

                                                                        1. Initial program 100.0%

                                                                          \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                        2. Add Preprocessing
                                                                        3. Taylor expanded in v around 0

                                                                          \[\leadsto \color{blue}{1} \]
                                                                        4. Step-by-step derivation
                                                                          1. Applied rewrites90.2%

                                                                            \[\leadsto \color{blue}{1} \]

                                                                          if 0.300000012 < v

                                                                          1. Initial program 94.3%

                                                                            \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                          2. Add Preprocessing
                                                                          3. Taylor expanded in v around inf

                                                                            \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \left(\frac{1}{6} \cdot \frac{-16 \cdot {\left(1 - u\right)}^{3} + \left(-8 \cdot \left(1 - u\right) + 24 \cdot {\left(1 - u\right)}^{2}\right)}{{v}^{2}} + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)\right)} \]
                                                                          4. Applied rewrites66.0%

                                                                            \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{\mathsf{fma}\left(\left(1 - u\right) \cdot \left(1 - u\right), \mathsf{fma}\left(1 - u, -16, 24\right), \mathsf{fma}\left(-8, -u, -8\right)\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right)} \]
                                                                          5. Taylor expanded in u around 0

                                                                            \[\leadsto 1 + \mathsf{fma}\left(\frac{1}{2}, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(\frac{1}{6}, \frac{u \cdot \left(8 + u \cdot \left(16 \cdot u - 24\right)\right)}{v \cdot v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right)\right) \]
                                                                          6. Step-by-step derivation
                                                                            1. Applied rewrites66.0%

                                                                              \[\leadsto 1 + \mathsf{fma}\left(0.5, \frac{\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right)}{v}, \mathsf{fma}\left(0.16666666666666666, \frac{u \cdot \mathsf{fma}\left(u, \mathsf{fma}\left(u, 16, -24\right), 8\right)}{v \cdot v}, \mathsf{fma}\left(-2, -u, -2\right)\right)\right) \]
                                                                          7. Recombined 2 regimes into one program.
                                                                          8. Add Preprocessing

                                                                          Alternative 20: 90.8% accurate, 5.2× speedup?

                                                                          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;1 + \mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(2, u, -2\right)\right)\\ \end{array} \end{array} \]
                                                                          (FPCore (u v)
                                                                           :precision binary32
                                                                           (if (<= v 0.30000001192092896)
                                                                             1.0
                                                                             (+ 1.0 (fma (* u (fma u -4.0 4.0)) (/ 0.5 v) (fma 2.0 u -2.0)))))
                                                                          float code(float u, float v) {
                                                                          	float tmp;
                                                                          	if (v <= 0.30000001192092896f) {
                                                                          		tmp = 1.0f;
                                                                          	} else {
                                                                          		tmp = 1.0f + fmaf((u * fmaf(u, -4.0f, 4.0f)), (0.5f / v), fmaf(2.0f, u, -2.0f));
                                                                          	}
                                                                          	return tmp;
                                                                          }
                                                                          
                                                                          function code(u, v)
                                                                          	tmp = Float32(0.0)
                                                                          	if (v <= Float32(0.30000001192092896))
                                                                          		tmp = Float32(1.0);
                                                                          	else
                                                                          		tmp = Float32(Float32(1.0) + fma(Float32(u * fma(u, Float32(-4.0), Float32(4.0))), Float32(Float32(0.5) / v), fma(Float32(2.0), u, Float32(-2.0))));
                                                                          	end
                                                                          	return tmp
                                                                          end
                                                                          
                                                                          \begin{array}{l}
                                                                          
                                                                          \\
                                                                          \begin{array}{l}
                                                                          \mathbf{if}\;v \leq 0.30000001192092896:\\
                                                                          \;\;\;\;1\\
                                                                          
                                                                          \mathbf{else}:\\
                                                                          \;\;\;\;1 + \mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(2, u, -2\right)\right)\\
                                                                          
                                                                          
                                                                          \end{array}
                                                                          \end{array}
                                                                          
                                                                          Derivation
                                                                          1. Split input into 2 regimes
                                                                          2. if v < 0.300000012

                                                                            1. Initial program 100.0%

                                                                              \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                            2. Add Preprocessing
                                                                            3. Taylor expanded in v around 0

                                                                              \[\leadsto \color{blue}{1} \]
                                                                            4. Step-by-step derivation
                                                                              1. Applied rewrites90.2%

                                                                                \[\leadsto \color{blue}{1} \]

                                                                              if 0.300000012 < v

                                                                              1. Initial program 94.3%

                                                                                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                              2. Add Preprocessing
                                                                              3. Taylor expanded in v around inf

                                                                                \[\leadsto 1 + \color{blue}{\left(-2 \cdot \left(1 - u\right) + \frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v}\right)} \]
                                                                              4. Step-by-step derivation
                                                                                1. +-commutativeN/A

                                                                                  \[\leadsto 1 + \color{blue}{\left(\frac{1}{2} \cdot \frac{-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)}{v} + -2 \cdot \left(1 - u\right)\right)} \]
                                                                                2. associate-*r/N/A

                                                                                  \[\leadsto 1 + \left(\color{blue}{\frac{\frac{1}{2} \cdot \left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right)}{v}} + -2 \cdot \left(1 - u\right)\right) \]
                                                                                3. *-commutativeN/A

                                                                                  \[\leadsto 1 + \left(\frac{\color{blue}{\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) \cdot \frac{1}{2}}}{v} + -2 \cdot \left(1 - u\right)\right) \]
                                                                                4. associate-/l*N/A

                                                                                  \[\leadsto 1 + \left(\color{blue}{\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right)\right) \cdot \frac{\frac{1}{2}}{v}} + -2 \cdot \left(1 - u\right)\right) \]
                                                                                5. lower-fma.f32N/A

                                                                                  \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(-4 \cdot {\left(1 - u\right)}^{2} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right)} \]
                                                                                6. *-commutativeN/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{{\left(1 - u\right)}^{2} \cdot -4} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                7. unpow2N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(\left(1 - u\right) \cdot \left(1 - u\right)\right)} \cdot -4 + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                8. associate-*l*N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4\right)} + 4 \cdot \left(1 - u\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                9. *-commutativeN/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4\right) + \color{blue}{\left(1 - u\right) \cdot 4}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                10. distribute-lft-outN/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4 + 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                11. lower-*.f32N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right) \cdot \left(\left(1 - u\right) \cdot -4 + 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                12. lower--.f32N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\color{blue}{\left(1 - u\right)} \cdot \left(\left(1 - u\right) \cdot -4 + 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                13. lower-fma.f32N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \color{blue}{\mathsf{fma}\left(1 - u, -4, 4\right)}, \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                14. lower--.f32N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(\color{blue}{1 - u}, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                15. lower-/.f32N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \color{blue}{\frac{\frac{1}{2}}{v}}, -2 \cdot \left(1 - u\right)\right) \]
                                                                                16. sub-negN/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \color{blue}{\left(1 + \left(\mathsf{neg}\left(u\right)\right)\right)}\right) \]
                                                                                17. neg-mul-1N/A

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{\frac{1}{2}}{v}, -2 \cdot \left(1 + \color{blue}{-1 \cdot u}\right)\right) \]
                                                                              5. Applied rewrites57.1%

                                                                                \[\leadsto 1 + \color{blue}{\mathsf{fma}\left(\left(1 - u\right) \cdot \mathsf{fma}\left(1 - u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right)} \]
                                                                              6. Taylor expanded in u around 0

                                                                                \[\leadsto 1 + \mathsf{fma}\left(u \cdot \left(4 + -4 \cdot u\right), \frac{\color{blue}{\frac{1}{2}}}{v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right) \]
                                                                              7. Step-by-step derivation
                                                                                1. Applied rewrites57.1%

                                                                                  \[\leadsto 1 + \mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{\color{blue}{0.5}}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right) \]
                                                                                2. Step-by-step derivation
                                                                                  1. lift-+.f32N/A

                                                                                    \[\leadsto \color{blue}{1 + \mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{\frac{1}{2}}{v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right)} \]
                                                                                  2. +-commutativeN/A

                                                                                    \[\leadsto \color{blue}{\mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{\frac{1}{2}}{v}, \mathsf{fma}\left(-2, \mathsf{neg}\left(u\right), -2\right)\right) + 1} \]
                                                                                  3. lower-+.f3257.1

                                                                                    \[\leadsto \color{blue}{\mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(-2, -u, -2\right)\right) + 1} \]
                                                                                3. Applied rewrites57.1%

                                                                                  \[\leadsto \color{blue}{\mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(2, u, -2\right)\right) + 1} \]
                                                                              8. Recombined 2 regimes into one program.
                                                                              9. Final simplification87.9%

                                                                                \[\leadsto \begin{array}{l} \mathbf{if}\;v \leq 0.30000001192092896:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;1 + \mathsf{fma}\left(u \cdot \mathsf{fma}\left(u, -4, 4\right), \frac{0.5}{v}, \mathsf{fma}\left(2, u, -2\right)\right)\\ \end{array} \]
                                                                              10. Add Preprocessing

                                                                              Alternative 21: 87.3% accurate, 231.0× speedup?

                                                                              \[\begin{array}{l} \\ 1 \end{array} \]
                                                                              (FPCore (u v) :precision binary32 1.0)
                                                                              float code(float u, float v) {
                                                                              	return 1.0f;
                                                                              }
                                                                              
                                                                              real(4) function code(u, v)
                                                                                  real(4), intent (in) :: u
                                                                                  real(4), intent (in) :: v
                                                                                  code = 1.0e0
                                                                              end function
                                                                              
                                                                              function code(u, v)
                                                                              	return Float32(1.0)
                                                                              end
                                                                              
                                                                              function tmp = code(u, v)
                                                                              	tmp = single(1.0);
                                                                              end
                                                                              
                                                                              \begin{array}{l}
                                                                              
                                                                              \\
                                                                              1
                                                                              \end{array}
                                                                              
                                                                              Derivation
                                                                              1. Initial program 99.6%

                                                                                \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                              2. Add Preprocessing
                                                                              3. Taylor expanded in v around 0

                                                                                \[\leadsto \color{blue}{1} \]
                                                                              4. Step-by-step derivation
                                                                                1. Applied rewrites84.2%

                                                                                  \[\leadsto \color{blue}{1} \]
                                                                                2. Add Preprocessing

                                                                                Alternative 22: 5.7% accurate, 231.0× speedup?

                                                                                \[\begin{array}{l} \\ -1 \end{array} \]
                                                                                (FPCore (u v) :precision binary32 -1.0)
                                                                                float code(float u, float v) {
                                                                                	return -1.0f;
                                                                                }
                                                                                
                                                                                real(4) function code(u, v)
                                                                                    real(4), intent (in) :: u
                                                                                    real(4), intent (in) :: v
                                                                                    code = -1.0e0
                                                                                end function
                                                                                
                                                                                function code(u, v)
                                                                                	return Float32(-1.0)
                                                                                end
                                                                                
                                                                                function tmp = code(u, v)
                                                                                	tmp = single(-1.0);
                                                                                end
                                                                                
                                                                                \begin{array}{l}
                                                                                
                                                                                \\
                                                                                -1
                                                                                \end{array}
                                                                                
                                                                                Derivation
                                                                                1. Initial program 99.6%

                                                                                  \[1 + v \cdot \log \left(u + \left(1 - u\right) \cdot e^{\frac{-2}{v}}\right) \]
                                                                                2. Add Preprocessing
                                                                                3. Taylor expanded in u around 0

                                                                                  \[\leadsto \color{blue}{-1} \]
                                                                                4. Step-by-step derivation
                                                                                  1. Applied rewrites5.7%

                                                                                    \[\leadsto \color{blue}{-1} \]
                                                                                  2. Add Preprocessing

                                                                                  Reproduce

                                                                                  ?
                                                                                  herbie shell --seed 2024226 
                                                                                  (FPCore (u v)
                                                                                    :name "HairBSDF, sample_f, cosTheta"
                                                                                    :precision binary32
                                                                                    :pre (and (and (<= 1e-5 u) (<= u 1.0)) (and (<= 0.0 v) (<= v 109.746574)))
                                                                                    (+ 1.0 (* v (log (+ u (* (- 1.0 u) (exp (/ -2.0 v))))))))