Average Error: 10.1 → 5.6
Time: 45.3s
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 +o rules:numerics
(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: 43.6s)Debug log

sample175.0ms

Algorithm
intervals
Results
52.0ms124×body160valid
52.0ms289×body80nan
44.0ms132×body80valid

simplify246.0ms

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

prune10.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 11.4b

localize66.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)

rewrite23.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
log1p-expm1-u
associate-/r/
unpow-prod-down
expm1-log1p-u
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 → 89
Calls
4 calls:
Slowest
11.0ms
(/ (- 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)))))
2.0ms
(pow (/ t l) 2)
1.0ms
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))

series222.0ms

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

simplify5.6s

Counts
66 → 101
Calls
66 calls:
Slowest
378.0ms
(- (* 1 1) (* (pow (/ Om Omc) 2) (pow (/ Om Omc) 2)))
334.0ms
(- (pow 1 3) (pow (pow (/ Om Omc) 2) 3))
205.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
196.0ms
(/ (- 1 (pow (/ Om Omc) 2)) (cbrt (+ 1 (* 2 (pow (/ t l) 2)))))
194.0ms
(/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))

prune1.7s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 11.3b

localize10.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)

rewrite10.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
log1p-expm1-u
unpow-prod-down
expm1-log1p-u
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 → 110
Calls
4 calls:
Slowest
6.0ms
(/ (sqrt (- 1 (pow (/ Om Omc) 2))) (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
1.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))))))

series166.0ms

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

simplify8.7s

Counts
114 → 122
Calls
114 calls:
Slowest
331.0ms
(sqrt (- (* 1 1) (* (pow (/ Om Omc) 2) (pow (/ Om Omc) 2))))
321.0ms
(sqrt (- (pow 1 3) (pow (pow (/ Om Omc) 2) 3)))
206.0ms
(sqrt (+ (pow 1 3) (pow (* 2 (pow (/ t l) 2)) 3)))
199.0ms
(/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))
163.0ms
(sqrt (+ (* 1 1) (- (* (* 2 (pow (/ t l) 2)) (* 2 (pow (/ t l) 2))) (* 1 (* 2 (pow (/ t l) 2))))))

prune1.7s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 6.2b

localize14.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))))))

rewrite24.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
log1p-expm1-u
flip-+
add-exp-log
pow1/2
add-cbrt-cube
flip3-+
pow1
expm1-log1p-u
Counts
4 → 120
Calls
4 calls:
Slowest
7.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
5.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
5.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
4.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))

series631.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
220.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
177.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))
117.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))
116.0ms
(sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))

simplify9.2s

Counts
92 → 132
Calls
92 calls:
Slowest
740.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ -1 t))) (+ (* 2 (log (/ -1 Omc))) (log -1/2))) (+ (* 2 (log (/ -1 l))) (* 2 (log (/ -1 Om)))))))
518.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 t))) (+ (* 2 (log (/ 1 Omc))) (log -1/2))) (+ (* 2 (log (/ 1 Om))) (* 2 (log (/ 1 l)))))))
489.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 t))) (+ (* 2 (log (/ 1 Omc))) (log -1/2))) (+ (* 2 (log (/ 1 Om))) (* 2 (log (/ 1 l)))))))
296.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ -1 t))) (+ (* 2 (log (/ -1 Omc))) (log -1/2))) (+ (* 2 (log (/ -1 l))) (* 2 (log (/ -1 Om)))))))
186.0ms
(sqrt (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2))))))

prune2.4s

Pruning

9 alts after pruning (7 fresh and 2 done)

Merged error: 6.2b

localize27.0ms

Local error

Found 4 expressions with local error:

10.4b
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
10.4b
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
7.2b
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
7.2b
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
26×sqrt-prod
16×add-sqr-sqrt
12×sqrt-div
10×add-cube-cbrt
10×*-un-lft-identity
rem-sqrt-square
add-log-exp
log1p-expm1-u
flip-+
add-exp-log
pow1/2
add-cbrt-cube
flip3-+
pow1
expm1-log1p-u
Counts
4 → 72
Calls
4 calls:
Slowest
2.0ms
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
2.0ms
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
1.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
1.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))

series327.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
135.0ms
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
110.0ms
(sqrt (sqrt (+ 1 (* 2 (pow (/ t l) 2)))))
45.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))
36.0ms
(sqrt (+ 1 (* 2 (pow (/ t l) 2))))

simplify3.9s

Counts
44 → 84
Calls
44 calls:
Slowest
452.0ms
(exp (* 1/4 (- (+ (log 2) (* 2 (log (/ -1 l)))) (* 2 (log (/ -1 t))))))
348.0ms
(exp (* 1/4 (- (+ (log 2) (* 2 (log (/ -1 l)))) (* 2 (log (/ -1 t))))))
267.0ms
(exp (* 1/4 (- (+ (log 2) (* 2 (log (/ 1 l)))) (* 2 (log (/ 1 t))))))
238.0ms
(sqrt (sqrt (+ (pow 1 3) (pow (* 2 (pow (/ t l) 2)) 3))))
210.0ms
(exp (* 1/4 (- (+ (log 2) (* 2 (log (/ 1 l)))) (* 2 (log (/ 1 t))))))

prune1.6s

Pruning

9 alts after pruning (6 fresh and 3 done)

Merged error: 6.2b

regimes2.0s

Accuracy

98.6% (0.1b remaining)

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

bsearch9.0ms

end0.0ms

sample5.0s

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