Average Error: 15.3 → 1.5
Time: 1.8m
Precision: 64
Internal Precision: 128
\[\cos \left(\frac{K \cdot \left(m + n\right)}{2} - M\right) \cdot e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\]
\[e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\]

Error

Bits error versus K

Bits error versus m

Bits error versus n

Bits error versus M

Bits error versus l

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 15.3

    \[\cos \left(\frac{K \cdot \left(m + n\right)}{2} - M\right) \cdot e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\]
  2. Taylor expanded around 0 1.5

    \[\leadsto \color{blue}{1} \cdot e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\]
  3. Final simplification1.5

    \[\leadsto e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\]

Reproduce

herbie shell --seed 2019022 +o rules:numerics
(FPCore (K m n M l)
  :name "Maksimov and Kolovsky, Equation (32)"
  (* (cos (- (/ (* K (+ m n)) 2) M)) (exp (- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n)))))))

Details

Time bar (total: 1.8m)Debug log

sample98.0ms

Algorithm
intervals
Results
51.0ms260×body80valid
16.0msbody1280valid
3.0msbody320valid
2.0msbody640valid
2.0msbody160valid

simplify98.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
98.0ms
(* (cos (- (/ (* K (+ m n)) 2) M)) (exp (- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))))

prune10.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 14.2b

localize56.0ms

Local error

Found 4 expressions with local error:

33.1b
(cos (- (/ (* K (+ m n)) 2) M))
0.0b
(* K (+ m n))
0.0b
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
0.0b
(pow (- (/ (+ m n) 2) M) 2)

rewrite151.0ms

Algorithm
rewrite-expression-head
Rules
54×prod-diff
48×*-un-lft-identity
46×add-sqr-sqrt
44×add-cube-cbrt
29×distribute-rgt-neg-in
28×distribute-lft-neg-in
27×unpow-prod-down
18×fma-neg
unpow2
add-log-exp
add-exp-log
pow1
log1p-expm1-u
add-cbrt-cube
neg-mul-1
expm1-log1p-u
associate-*r*
sub-neg
distribute-lft-out--
associate--r+
associate-*r/
diff-log
cos-sum
difference-of-squares
associate--r-
flip--
flip-+
*-commutative
pow-exp
neg-log
flip3--
flip3-+
distribute-lft-in
pow-pow
pow-to-exp
cos-diff
distribute-rgt-in
neg-sub0
associate--l-
Counts
4 → 139
Calls
4 calls:
Slowest
128.0ms
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
12.0ms
(cos (- (/ (* K (+ m n)) 2) M))
6.0ms
(pow (- (/ (+ m n) 2) M) 2)
2.0ms
(* K (+ m n))

series310.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
152.0ms
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
78.0ms
(cos (- (/ (* K (+ m n)) 2) M))
52.0ms
(pow (- (/ (+ m n) 2) M) 2)
28.0ms
(* K (+ m n))

simplify32.7s

Counts
159 → 151
Calls
159 calls:
Slowest
975.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
583.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
561.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
559.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
556.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))

prune2.8s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.8b

localize3.0ms

Local error

Found 2 expressions with local error:

0.0b
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
0.0b
(pow (- (/ (+ m n) 2) M) 2)

rewrite123.0ms

Algorithm
rewrite-expression-head
Rules
54×prod-diff
45×*-un-lft-identity
43×add-sqr-sqrt
41×add-cube-cbrt
29×distribute-rgt-neg-in
28×distribute-lft-neg-in
27×unpow-prod-down
18×fma-neg
unpow2
add-log-exp
neg-mul-1
add-exp-log
pow1
distribute-lft-out--
associate--r+
log1p-expm1-u
diff-log
add-cbrt-cube
sub-neg
expm1-log1p-u
difference-of-squares
associate--r-
flip--
pow-exp
neg-log
flip3--
pow-pow
pow-to-exp
neg-sub0
associate--l-
Counts
2 → 110
Calls
2 calls:
Slowest
116.0ms
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
6.0ms
(pow (- (/ (+ m n) 2) M) 2)

series154.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
108.0ms
(- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n))))
45.0ms
(pow (- (/ (+ m n) 2) M) 2)

simplify32.4s

Counts
143 → 116
Calls
143 calls:
Slowest
775.0ms
(fma -1 (pow (- (/ (+ m n) 2) M) 2) (- (* (- l (fabs (- m n))) 1)))
622.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
565.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
554.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))
543.0ms
(fma (- (- l (fabs (- m n)))) 1 (* (- l (fabs (- m n))) 1))

prune1.7s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.8b

localize21.0ms

Local error

Found 4 expressions with local error:

33.1b
(cos (- (/ (* K (+ m n)) 2) M))
0.0b
(* K (+ m n))
0.0b
(fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)
0.0b
(- (fabs (- m n)) (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
14×*-un-lft-identity
14×add-sqr-sqrt
12×add-cube-cbrt
prod-diff
add-log-exp
log1p-expm1-u
add-exp-log
add-cbrt-cube
pow1
expm1-log1p-u
associate-*r*
fma-neg
fma-udef
associate-*r/
sub-neg
cos-sum
difference-of-squares
distribute-lft-out--
associate--r+
flip--
flip-+
*-commutative
diff-log
flip3--
flip3-+
distribute-lft-in
cos-diff
distribute-rgt-in
Counts
4 → 68
Calls
4 calls:
Slowest
13.0ms
(cos (- (/ (* K (+ m n)) 2) M))
6.0ms
(- (fabs (- m n)) (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l))
1.0ms
(* K (+ m n))
0.0ms
(fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)

series273.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
99.0ms
(- (fabs (- m n)) (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l))
95.0ms
(fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)
57.0ms
(cos (- (/ (* K (+ m n)) 2) M))
22.0ms
(* K (+ m n))

simplify6.1s

Counts
46 → 80
Calls
46 calls:
Slowest
524.0ms
(fma (- (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)) 1 (* (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l) 1))
460.0ms
(fma (- (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)) 1 (* (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l) 1))
432.0ms
(fma (- (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)) 1 (* (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l) 1))
417.0ms
(+ (sqrt (fabs (- m n))) (sqrt (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)))
411.0ms
(- (sqrt (fabs (- m n))) (sqrt (fma (- (/ (+ m n) 2) M) (- (/ (+ m n) 2) M) l)))

prune1.3s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.8b

localize44.0ms

Local error

Found 4 expressions with local error:

33.1b
(cos (- (/ (cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))) 2) M))
27.4b
(cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n))))
0.3b
(* (* K (+ m n)) (* K (+ m n)))
0.1b
(* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))

rewrite55.0ms

Algorithm
rewrite-expression-head
Rules
138×associate-*r/
60×flip-+
60×flip3-+
60×frac-times
30×associate-*l/
26×cbrt-div
23×pow1
11×add-exp-log
11×add-cbrt-cube
distribute-lft-in
distribute-rgt-in
pow-prod-up
pow-plus
add-log-exp
log1p-expm1-u
cbrt-unprod
add-cube-cbrt
prod-exp
pow-prod-down
*-un-lft-identity
expm1-log1p-u
add-sqr-sqrt
pow2
*-commutative
pow3
associate-*l*
associate-*r*
cos-sum
rem-cbrt-cube
pow1/3
sub-neg
cos-diff
cbrt-prod
Counts
4 → 135
Calls
4 calls:
Slowest
24.0ms
(* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))
12.0ms
(cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n))))
9.0ms
(cos (- (/ (cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))) 2) M))
6.0ms
(* (* K (+ m n)) (* K (+ m n)))

series135.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
58.0ms
(cos (- (/ (cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))) 2) M))
34.0ms
(* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))
23.0ms
(cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n))))
20.0ms
(* (* K (+ m n)) (* K (+ m n)))

simplify21.8s

Counts
129 → 147
Calls
129 calls:
Slowest
873.0ms
(cbrt (* (* (* K (- (* m m) (* n n))) (* K (- (* m m) (* n n)))) (* K (- (* m m) (* n n)))))
870.0ms
(* (* (* K (- (* m m) (* n n))) (* K (- (* m m) (* n n)))) (* K (- (* m m) (* n n))))
778.0ms
(* (* K n) (* (* K (+ m n)) (* K (+ m n))))
760.0ms
(* (cos (/ (cbrt (* (* (* K (+ m n)) (* K (+ m n))) (* K (+ m n)))) 2)) (cos M))
727.0ms
(* (* K (+ (pow m 3) (pow n 3))) (* K (- (* m m) (* n n))))

prune3.0s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.8b

regimes366.0ms

Accuracy

0% (0.2b remaining)

Error of 1.5b against oracle of 1.3b and baseline of 1.5b

bsearch4.0ms

end0.0ms

sample3.3s

Algorithm
intervals
Results
2.6s8090×body80valid
261.0ms158×body640valid
153.0ms118×body1280valid
71.0ms105×body320valid
24.0ms54×body160valid
6.0msbody2560valid