| Alternative 1 | |
|---|---|
| Accuracy | 98.7% |
| Cost | 7008 |
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v) :precision binary32 (/ (* (exp (- (/ (* sinTheta_i sinTheta_O) v))) (/ (* cosTheta_i cosTheta_O) v)) (* (* (sinh (/ 1.0 v)) 2.0) v)))
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v) :precision binary32 (/ (* cosTheta_i cosTheta_O) (* (/ (* v (sinh (/ 1.0 v))) (/ 0.5 v)) (exp (* (/ sinTheta_O v) sinTheta_i)))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
return (expf(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinhf((1.0f / v)) * 2.0f) * v);
}
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
return (cosTheta_i * cosTheta_O) / (((v * sinhf((1.0f / v))) / (0.5f / v)) * expf(((sinTheta_O / v) * sinTheta_i)));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
real(4), intent (in) :: costheta_i
real(4), intent (in) :: costheta_o
real(4), intent (in) :: sintheta_i
real(4), intent (in) :: sintheta_o
real(4), intent (in) :: v
code = (exp(-((sintheta_i * sintheta_o) / v)) * ((costheta_i * costheta_o) / v)) / ((sinh((1.0e0 / v)) * 2.0e0) * v)
end function
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
real(4), intent (in) :: costheta_i
real(4), intent (in) :: costheta_o
real(4), intent (in) :: sintheta_i
real(4), intent (in) :: sintheta_o
real(4), intent (in) :: v
code = (costheta_i * costheta_o) / (((v * sinh((1.0e0 / v))) / (0.5e0 / v)) * exp(((sintheta_o / v) * sintheta_i)))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v) return Float32(Float32(exp(Float32(-Float32(Float32(sinTheta_i * sinTheta_O) / v))) * Float32(Float32(cosTheta_i * cosTheta_O) / v)) / Float32(Float32(sinh(Float32(Float32(1.0) / v)) * Float32(2.0)) * v)) end
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v) return Float32(Float32(cosTheta_i * cosTheta_O) / Float32(Float32(Float32(v * sinh(Float32(Float32(1.0) / v))) / Float32(Float32(0.5) / v)) * exp(Float32(Float32(sinTheta_O / v) * sinTheta_i)))) end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v) tmp = (exp(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinh((single(1.0) / v)) * single(2.0)) * v); end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v) tmp = (cosTheta_i * cosTheta_O) / (((v * sinh((single(1.0) / v))) / (single(0.5) / v)) * exp(((sinTheta_O / v) * sinTheta_i))); end
\frac{e^{-\frac{sinTheta_i \cdot sinTheta_O}{v}} \cdot \frac{cosTheta_i \cdot cosTheta_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}
\frac{cosTheta_i \cdot cosTheta_O}{\frac{v \cdot \sinh \left(\frac{1}{v}\right)}{\frac{0.5}{v}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
Results
Initial program 98.5%
Simplified98.5%
[Start]98.5 | \[ \frac{e^{-\frac{sinTheta_i \cdot sinTheta_O}{v}} \cdot \frac{cosTheta_i \cdot cosTheta_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}
\] |
|---|---|
associate-*l/ [<=]98.5 | \[ \color{blue}{\frac{e^{-\frac{sinTheta_i \cdot sinTheta_O}{v}}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \cdot \frac{cosTheta_i \cdot cosTheta_O}{v}}
\] |
times-frac [<=]98.5 | \[ \color{blue}{\frac{e^{-\frac{sinTheta_i \cdot sinTheta_O}{v}} \cdot \left(cosTheta_i \cdot cosTheta_O\right)}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right) \cdot v}}
\] |
exp-neg [=>]98.5 | \[ \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}} \cdot \left(cosTheta_i \cdot cosTheta_O\right)}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right) \cdot v}
\] |
associate-*l/ [=>]98.5 | \[ \frac{\color{blue}{\frac{1 \cdot \left(cosTheta_i \cdot cosTheta_O\right)}{e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}}}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right) \cdot v}
\] |
*-lft-identity [=>]98.5 | \[ \frac{\frac{\color{blue}{cosTheta_i \cdot cosTheta_O}}{e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right) \cdot v}
\] |
associate-/l/ [=>]98.5 | \[ \color{blue}{\frac{cosTheta_i \cdot cosTheta_O}{\left(\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right) \cdot v\right) \cdot e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}}
\] |
associate-*l* [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot v\right)\right)} \cdot v\right) \cdot e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}
\] |
associate-*l* [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(\left(2 \cdot v\right) \cdot v\right)\right)} \cdot e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}
\] |
*-commutative [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(\color{blue}{\left(v \cdot 2\right)} \cdot v\right)\right) \cdot e^{\frac{sinTheta_i \cdot sinTheta_O}{v}}}
\] |
*-commutative [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(\left(v \cdot 2\right) \cdot v\right)\right) \cdot e^{\frac{\color{blue}{sinTheta_O \cdot sinTheta_i}}{v}}}
\] |
associate-*l/ [<=]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(\left(v \cdot 2\right) \cdot v\right)\right) \cdot e^{\color{blue}{\frac{sinTheta_O}{v} \cdot sinTheta_i}}}
\] |
Applied egg-rr98.5%
[Start]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(\left(v \cdot 2\right) \cdot v\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
|---|---|
*-commutative [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\left(\left(\left(v \cdot 2\right) \cdot v\right) \cdot \sinh \left(\frac{1}{v}\right)\right)} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sinh-def [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(\left(v \cdot 2\right) \cdot v\right) \cdot \color{blue}{\frac{e^{\frac{1}{v}} - e^{-\frac{1}{v}}}{2}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-*r/ [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\frac{\left(\left(v \cdot 2\right) \cdot v\right) \cdot \left(e^{\frac{1}{v}} - e^{-\frac{1}{v}}\right)}{2}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
*-commutative [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{\color{blue}{\left(v \cdot \left(v \cdot 2\right)\right)} \cdot \left(e^{\frac{1}{v}} - e^{-\frac{1}{v}}\right)}{2} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sinh-undef [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{\left(v \cdot \left(v \cdot 2\right)\right) \cdot \color{blue}{\left(2 \cdot \sinh \left(\frac{1}{v}\right)\right)}}{2} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
Simplified98.5%
[Start]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{\left(v \cdot \left(v \cdot 2\right)\right) \cdot \left(2 \cdot \sinh \left(\frac{1}{v}\right)\right)}{2} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
|---|---|
associate-/l* [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\frac{v \cdot \left(v \cdot 2\right)}{\frac{2}{2 \cdot \sinh \left(\frac{1}{v}\right)}}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/r* [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{v \cdot \left(v \cdot 2\right)}{\color{blue}{\frac{\frac{2}{2}}{\sinh \left(\frac{1}{v}\right)}}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
metadata-eval [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{v \cdot \left(v \cdot 2\right)}{\frac{\color{blue}{1}}{\sinh \left(\frac{1}{v}\right)}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/l* [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\frac{v}{\frac{\frac{1}{\sinh \left(\frac{1}{v}\right)}}{v \cdot 2}}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
Applied egg-rr98.7%
[Start]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\frac{v}{\frac{\frac{1}{\sinh \left(\frac{1}{v}\right)}}{v \cdot 2}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
|---|---|
frac-2neg [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\frac{-v}{-\frac{\frac{1}{\sinh \left(\frac{1}{v}\right)}}{v \cdot 2}}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
div-inv [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\left(\left(-v\right) \cdot \frac{1}{-\frac{\frac{1}{\sinh \left(\frac{1}{v}\right)}}{v \cdot 2}}\right)} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/l/ [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\color{blue}{\frac{1}{\left(v \cdot 2\right) \cdot \sinh \left(\frac{1}{v}\right)}}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/r* [=>]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\color{blue}{\frac{\frac{1}{v \cdot 2}}{\sinh \left(\frac{1}{v}\right)}}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
*-commutative [=>]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\frac{\frac{1}{\color{blue}{2 \cdot v}}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/r* [=>]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\frac{\color{blue}{\frac{\frac{1}{2}}{v}}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
metadata-eval [=>]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\frac{\frac{\color{blue}{0.5}}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
Applied egg-rr98.5%
[Start]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\left(-v\right) \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
|---|---|
add-sqr-sqrt [=>]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\color{blue}{\left(\sqrt{-v} \cdot \sqrt{-v}\right)} \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqrt-unprod [=>]49.4 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\color{blue}{\sqrt{\left(-v\right) \cdot \left(-v\right)}} \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqr-neg [=>]49.4 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\sqrt{\color{blue}{v \cdot v}} \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqrt-unprod [<=]49.4 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\color{blue}{\left(\sqrt{v} \cdot \sqrt{v}\right)} \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
add-sqr-sqrt [<=]49.4 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\left(\color{blue}{v} \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
expm1-log1p-u [=>]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(v \cdot \frac{1}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right)} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
un-div-inv [=>]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\color{blue}{\frac{v}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
add-sqr-sqrt [=>]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{v} \cdot \sqrt{v}}}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqrt-unprod [=>]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{v \cdot v}}}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqr-neg [<=]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\sqrt{\color{blue}{\left(-v\right) \cdot \left(-v\right)}}}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
sqrt-unprod [<=]-0.0 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{-v} \cdot \sqrt{-v}}}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
add-sqr-sqrt [<=]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\color{blue}{-v}}{-\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
distribute-neg-frac [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{-v}{\color{blue}{\frac{-\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-/r/ [=>]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\color{blue}{\frac{-v}{-\frac{0.5}{v}} \cdot \sinh \left(\frac{1}{v}\right)}\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
Applied egg-rr98.7%
[Start]98.5 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{v}{\frac{0.5}{v}} \cdot \sinh \left(\frac{1}{v}\right)\right)\right) \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
|---|---|
expm1-log1p-u [<=]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\left(\frac{v}{\frac{0.5}{v}} \cdot \sinh \left(\frac{1}{v}\right)\right)} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
associate-*l/ [=>]98.7 | \[ \frac{cosTheta_i \cdot cosTheta_O}{\color{blue}{\frac{v \cdot \sinh \left(\frac{1}{v}\right)}{\frac{0.5}{v}}} \cdot e^{\frac{sinTheta_O}{v} \cdot sinTheta_i}}
\] |
Final simplification98.7%
| Alternative 1 | |
|---|---|
| Accuracy | 98.7% |
| Cost | 7008 |
| Alternative 2 | |
|---|---|
| Accuracy | 98.3% |
| Cost | 3616 |
| Alternative 3 | |
|---|---|
| Accuracy | 98.2% |
| Cost | 3616 |
| Alternative 4 | |
|---|---|
| Accuracy | 98.4% |
| Cost | 3616 |
| Alternative 5 | |
|---|---|
| Accuracy | 59.9% |
| Cost | 864 |
| Alternative 6 | |
|---|---|
| Accuracy | 58.8% |
| Cost | 608 |
| Alternative 7 | |
|---|---|
| Accuracy | 58.8% |
| Cost | 608 |
| Alternative 8 | |
|---|---|
| Accuracy | 58.2% |
| Cost | 288 |
| Alternative 9 | |
|---|---|
| Accuracy | 58.2% |
| Cost | 288 |
| Alternative 10 | |
|---|---|
| Accuracy | 57.7% |
| Cost | 224 |
| Alternative 11 | |
|---|---|
| Accuracy | 57.7% |
| Cost | 224 |
| Alternative 12 | |
|---|---|
| Accuracy | 57.7% |
| Cost | 224 |
| Alternative 13 | |
|---|---|
| Accuracy | 58.2% |
| Cost | 224 |
herbie shell --seed 2023147
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
:name "HairBSDF, Mp, upper"
:precision binary32
:pre (and (and (and (and (and (and (<= -1.0 cosTheta_i) (<= cosTheta_i 1.0)) (and (<= -1.0 cosTheta_O) (<= cosTheta_O 1.0))) (and (<= -1.0 sinTheta_i) (<= sinTheta_i 1.0))) (and (<= -1.0 sinTheta_O) (<= sinTheta_O 1.0))) (< 0.1 v)) (<= v 1.5707964))
(/ (* (exp (- (/ (* sinTheta_i sinTheta_O) v))) (/ (* cosTheta_i cosTheta_O) v)) (* (* (sinh (/ 1.0 v)) 2.0) v)))