Average Error: 1.5 → 1.5
Time: 10.8s
Precision: 64
\[\left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)\]
\[\left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)\]
\left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)
\left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)
double f(double top_row_norm, double bottom_row_norm, double top_row_pivot_element, double bottom_row_pivot_element) {
        double r143974 = top_row_norm;
        double r143975 = bottom_row_norm;
        double r143976 = r143974 * r143975;
        double r143977 = top_row_pivot_element;
        double r143978 = r143977 * r143975;
        double r143979 = r143978 * r143977;
        double r143980 = bottom_row_pivot_element;
        double r143981 = r143980 * r143974;
        double r143982 = r143980 * r143981;
        double r143983 = r143979 + r143982;
        double r143984 = r143976 * r143983;
        return r143984;
}

double f(double top_row_norm, double bottom_row_norm, double top_row_pivot_element, double bottom_row_pivot_element) {
        double r143985 = top_row_norm;
        double r143986 = bottom_row_norm;
        double r143987 = r143985 * r143986;
        double r143988 = top_row_pivot_element;
        double r143989 = r143988 * r143986;
        double r143990 = r143989 * r143988;
        double r143991 = bottom_row_pivot_element;
        double r143992 = r143991 * r143985;
        double r143993 = r143991 * r143992;
        double r143994 = r143990 + r143993;
        double r143995 = r143987 * r143994;
        return r143995;
}

Error

Bits error versus top_row_norm

Bits error versus bottom_row_norm

Bits error versus top_row_pivot_element

Bits error versus bottom_row_pivot_element

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 1.5

    \[\left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)\]
  2. Final simplification1.5

    \[\leadsto \left(top_row_norm \cdot bottom_row_norm\right) \cdot \left(\left(top_row_pivot_element \cdot bottom_row_norm\right) \cdot top_row_pivot_element + bottom_row_pivot_element \cdot \left(bottom_row_pivot_element \cdot top_row_norm\right)\right)\]

Reproduce

herbie shell --seed 1 
(FPCore (top_row_norm bottom_row_norm top_row_pivot_element bottom_row_pivot_element)
  :name "top_row_norm * bottom_row_norm*(((top_row_pivot_element * bottom_row_norm) * top_row_pivot_element) + (bottom_row_pivot_element*(bottom_row_pivot_element * top_row_norm)))"
  :precision binary32
  (* (* top_row_norm bottom_row_norm) (+ (* (* top_row_pivot_element bottom_row_norm) top_row_pivot_element) (* bottom_row_pivot_element (* bottom_row_pivot_element top_row_norm)))))