Average Error: 10.1 → 5.6
Time: 45.7s
Precision: 64
Internal Precision: 128
\[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]
\[\begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le 2.6533544154515334 \cdot 10^{+122}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\ \end{array}\]

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (/ t l) < 2.6533544154515334e+122

    1. Initial program 6.4

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]

    if 2.6533544154515334e+122 < (/ t l)

    1. Initial program 29.2

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]
    2. Using strategy rm
    3. Applied sqrt-div29.2

      \[\leadsto \sin^{-1} \color{blue}{\left(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)}\]
    4. Taylor expanded around -inf 1.2

      \[\leadsto \sin^{-1} \left(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\color{blue}{\frac{t \cdot \sqrt{2}}{\ell}}}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification5.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le 2.6533544154515334 \cdot 10^{+122}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019022 
(FPCore (t l Om Omc)
  :name "Toniolo and Linder, Equation (2)"
  (asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))))

Details

Time bar (total: 44.4s)Debug log

sample206.0ms

Algorithm
intervals
Results
85.0ms289×body80nan
60.0ms124×body160valid
33.0ms132×body80valid

simplify192.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
192.0ms
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))

prune17.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 11.4b

localize43.0ms

Local error

Found 4 expressions with local error:

10.2b
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
0.5b
(/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))
0.5b
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
0.2b
(pow (/ t l) 2)

rewrite19.0ms

Algorithm
rewrite-expression-head
Rules
23×add-sqr-sqrt
20×add-cube-cbrt
20×*-un-lft-identity
19×times-frac
15×sqrt-prod
add-exp-log
add-cbrt-cube
pow1
add-log-exp
associate-/r/
unpow-prod-down
associate-/l*
div-inv
associate-/r*
associate-/l/
flip-+
flip3-+
rem-sqrt-square
unpow2
flip--
pow-exp
div-exp
div-sub
sqrt-div
pow1/2
flip3--
frac-2neg
pow-pow
clear-num
asin-acos
cbrt-undiv
pow-to-exp
Counts
4 → 81
Calls
4 calls:
Slowest
12.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
5.0ms
(/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))
1.0ms
(pow (/ t l) 2)
0.0ms
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))

series227.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
124.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
74.0ms
(/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))
17.0ms
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
11.0ms
(pow (/ t l) 2)

simplify5.9s

Counts
66 → 93
Calls
66 calls:
Slowest
428.0ms
(- (* 1 1) (* (pow (/ Om Omc) 2) (pow (/ Om Omc) 2)))
370.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))
360.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))
340.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))
267.0ms
(- (pow 1 3) (pow (pow (/ Om Omc) 2) 3))

prune1.3s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 11.3b

localize22.0ms

Local error

Found 4 expressions with local error:

10.4b
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
0.6b
(/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
0.5b
(asin (/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2))))))
0.2b
(pow (/ t l) 2)

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
45×sqrt-prod
36×times-frac
35×add-sqr-sqrt
34×add-cube-cbrt
34×*-un-lft-identity
add-exp-log
associate-/l*
sqrt-div
add-cbrt-cube
associate-/r*
pow1
add-log-exp
unpow-prod-down
associate-/l/
div-inv
flip-+
associate-/r/
flip3-+
unpow2
flip--
pow-exp
div-exp
pow1/2
flip3--
frac-2neg
pow-pow
clear-num
sqrt-undiv
asin-acos
rem-sqrt-square
cbrt-undiv
pow-to-exp
Counts
4 → 102
Calls
4 calls:
Slowest
14.0ms
(/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
2.0ms
(pow (/ t l) 2)
1.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
1.0ms
(asin (/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2))))))

series206.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
151.0ms
(/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
34.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
11.0ms
(asin (/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2))))))
10.0ms
(pow (/ t l) 2)

simplify9.7s

Counts
114 → 114
Calls
114 calls:
Slowest
412.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))
350.0ms
(sqrt (- (pow 1 3) (pow (pow (/ Om Omc) 2) 3)))
344.0ms
(sqrt (- (* 1 1) (* (pow (/ Om Omc) 2) (pow (/ Om Omc) 2))))
343.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))
340.0ms
(asin (sqrt (/ (- 1 (/ (pow Om 2) (pow Omc 2))) (+ (* 2 (/ (pow t 2) (pow l 2))) 1))))

prune1.9s

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 6.2b

localize18.0ms

Local error

Found 4 expressions with local error:

10.2b
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
10.2b
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
6.5b
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
6.5b
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))

rewrite27.0ms

Algorithm
rewrite-expression-head
Rules
100×sqrt-prod
48×add-sqr-sqrt
40×times-frac
34×add-cube-cbrt
34×*-un-lft-identity
10×rem-sqrt-square
associate-/r/
sqrt-div
add-log-exp
div-inv
flip-+
add-exp-log
pow1/2
add-cbrt-cube
flip3-+
pow1
Counts
4 → 112
Calls
4 calls:
Slowest
7.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
6.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
6.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
5.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))

series677.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
236.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
196.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
123.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
122.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))

simplify9.6s

Counts
92 → 124
Calls
92 calls:
Slowest
501.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
369.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ -1 t))) (+ (* 2 (log (/ -1 Omc))) (log -1/2))) (+ (* 2 (log (/ -1 l))) (* 2 (log (/ -1 Om)))))))
336.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ -1 t))) (+ (* 2 (log (/ -1 Omc))) (log -1/2))) (+ (* 2 (log (/ -1 l))) (* 2 (log (/ -1 Om)))))))
322.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 t))) (+ (* 2 (log (/ 1 Omc))) (log -1/2))) (+ (* 2 (log (/ 1 Om))) (* 2 (log (/ 1 l)))))))
292.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 t))) (+ (* 2 (log (/ 1 Omc))) (log -1/2))) (+ (* 2 (log (/ 1 Om))) (* 2 (log (/ 1 l)))))))

prune2.3s

Pruning

8 alts after pruning (6 fresh and 2 done)

Merged error: 6.2b

localize56.0ms

Local error

Found 4 expressions with local error:

16.3b
(cbrt (+ 1 (/ 2 (* (/ l t) (/ l t)))))
16.3b
(cbrt (+ 1 (* 2 (pow (/ t l) 2))))
1.5b
(sqrt (cbrt (+ 1 (* 2 (pow (/ t l) 2)))))
0.8b
(/ 2 (* (/ l t) (/ l t)))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
10×add-sqr-sqrt
10×cbrt-prod
add-cube-cbrt
*-un-lft-identity
sqrt-prod
cbrt-div
add-log-exp
add-exp-log
add-cbrt-cube
pow1
flip-+
associate-/r/
flip3-+
sqrt-div
pow1/3
rem-sqrt-square
div-inv
associate-*r/
associate-*l/
pow1/2
frac-2neg
associate-/r*
clear-num
frac-times
Counts
4 → 58
Calls
4 calls:
Slowest
3.0ms
(cbrt (+ 1 (/ 2 (* (/ l t) (/ l t)))))
2.0ms
(sqrt (cbrt (+ 1 (* 2 (pow (/ t l) 2)))))
1.0ms
(/ 2 (* (/ l t) (/ l t)))
1.0ms
(cbrt (+ 1 (* 2 (pow (/ t l) 2))))

series451.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
147.0ms
(sqrt (cbrt (+ 1 (* 2 (pow (/ t l) 2)))))
140.0ms
(cbrt (+ 1 (* 2 (pow (/ t l) 2))))
136.0ms
(cbrt (+ 1 (/ 2 (* (/ l t) (/ l t)))))
28.0ms
(/ 2 (* (/ l t) (/ l t)))

simplify3.0s

Counts
34 → 70
Calls
34 calls:
Slowest
338.0ms
(cbrt (+ (pow 1 3) (pow (/ 2 (* (/ l t) (/ l t))) 3)))
254.0ms
(exp (* 1/3 (- (+ (log 2) (* 2 (log t))) (* 2 (log l)))))
246.0ms
(exp (* 1/6 (- (+ (log 2) (* 2 (log (/ -1 l)))) (* 2 (log (/ -1 t))))))
204.0ms
(cbrt (- (* 1 1) (* (/ 2 (* (/ l t) (/ l t))) (/ 2 (* (/ l t) (/ l t))))))
197.0ms
(exp (* 1/3 (- (+ (log 2) (* 2 (log (/ -1 l)))) (* 2 (log (/ -1 t))))))

prune1.6s

Pruning

8 alts after pruning (5 fresh and 3 done)

Merged error: 6.2b

regimes1.7s

Accuracy

98.6% (0.1b remaining)

Error of 5.6b against oracle of 5.5b and baseline of 10.1b

bsearch5.0ms

end0.0ms

sample5.2s

Algorithm
intervals
Results
2.1s3845×body160valid
1.6s8176×body80nan
915.0ms4155×body80valid