Average Error: 0.1 → 0.1
Time: 18.5s
Precision: 64
$\left(\left(-\mathsf{expm1}\left(x\right)\right) \cdot \left(-\mathsf{expm1}\left(y\right)\right)\right) \cdot \left(-\mathsf{expm1}\left(z\right)\right)$
$\left(-\mathsf{expm1}\left(z\right)\right) \cdot \left(\mathsf{expm1}\left(y\right) \cdot \mathsf{expm1}\left(x\right)\right)$
\left(\left(-\mathsf{expm1}\left(x\right)\right) \cdot \left(-\mathsf{expm1}\left(y\right)\right)\right) \cdot \left(-\mathsf{expm1}\left(z\right)\right)
\left(-\mathsf{expm1}\left(z\right)\right) \cdot \left(\mathsf{expm1}\left(y\right) \cdot \mathsf{expm1}\left(x\right)\right)
double f(double x, double y, double z) {
double r443262 = x;
double r443263 = expm1(r443262);
double r443264 = -r443263;
double r443265 = y;
double r443266 = expm1(r443265);
double r443267 = -r443266;
double r443268 = r443264 * r443267;
double r443269 = z;
double r443270 = expm1(r443269);
double r443271 = -r443270;
double r443272 = r443268 * r443271;
return r443272;
}


double f(double x, double y, double z) {
double r443273 = z;
double r443274 = expm1(r443273);
double r443275 = -r443274;
double r443276 = y;
double r443277 = expm1(r443276);
double r443278 = x;
double r443279 = expm1(r443278);
double r443280 = r443277 * r443279;
double r443281 = r443275 * r443280;
return r443281;
}



# Try it out

Results

 In Out
Enter valid numbers for all inputs

# Derivation

1. Initial program 0.1

$\left(\left(-\mathsf{expm1}\left(x\right)\right) \cdot \left(-\mathsf{expm1}\left(y\right)\right)\right) \cdot \left(-\mathsf{expm1}\left(z\right)\right)$
2. Final simplification0.1

$\leadsto \left(-\mathsf{expm1}\left(z\right)\right) \cdot \left(\mathsf{expm1}\left(y\right) \cdot \mathsf{expm1}\left(x\right)\right)$

# Reproduce

herbie shell --seed 1
(FPCore (x y z)
:name "(-expm1(x))*(-expm1(y))*(-expm1(z))"
:precision binary64
(* (* (- (expm1 x)) (- (expm1 y))) (- (expm1 z))))