Average Error: 0.5 → 0.6
Time: 10.7s
Precision: binary64
Cost: 20036
\[\frac{1}{\sqrt{k}} \cdot {\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)} \]
\[\begin{array}{l} \mathbf{if}\;k \leq 2.8288719500201867 \cdot 10^{-28}:\\ \;\;\;\;\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{{\left(-2 \cdot \frac{\pi}{\frac{-1}{n}}\right)}^{\left(1 - k\right)}}{k}}\\ \end{array} \]
(FPCore (k n)
 :precision binary64
 (* (/ 1.0 (sqrt k)) (pow (* (* 2.0 PI) n) (/ (- 1.0 k) 2.0))))
(FPCore (k n)
 :precision binary64
 (if (<= k 2.8288719500201867e-28)
   (* (sqrt n) (sqrt (* 2.0 (/ PI k))))
   (sqrt (/ (pow (* -2.0 (/ PI (/ -1.0 n))) (- 1.0 k)) k))))
double code(double k, double n) {
	return (1.0 / sqrt(k)) * pow(((2.0 * ((double) M_PI)) * n), ((1.0 - k) / 2.0));
}
double code(double k, double n) {
	double tmp;
	if (k <= 2.8288719500201867e-28) {
		tmp = sqrt(n) * sqrt((2.0 * (((double) M_PI) / k)));
	} else {
		tmp = sqrt((pow((-2.0 * (((double) M_PI) / (-1.0 / n))), (1.0 - k)) / k));
	}
	return tmp;
}
public static double code(double k, double n) {
	return (1.0 / Math.sqrt(k)) * Math.pow(((2.0 * Math.PI) * n), ((1.0 - k) / 2.0));
}
public static double code(double k, double n) {
	double tmp;
	if (k <= 2.8288719500201867e-28) {
		tmp = Math.sqrt(n) * Math.sqrt((2.0 * (Math.PI / k)));
	} else {
		tmp = Math.sqrt((Math.pow((-2.0 * (Math.PI / (-1.0 / n))), (1.0 - k)) / k));
	}
	return tmp;
}
def code(k, n):
	return (1.0 / math.sqrt(k)) * math.pow(((2.0 * math.pi) * n), ((1.0 - k) / 2.0))
def code(k, n):
	tmp = 0
	if k <= 2.8288719500201867e-28:
		tmp = math.sqrt(n) * math.sqrt((2.0 * (math.pi / k)))
	else:
		tmp = math.sqrt((math.pow((-2.0 * (math.pi / (-1.0 / n))), (1.0 - k)) / k))
	return tmp
function code(k, n)
	return Float64(Float64(1.0 / sqrt(k)) * (Float64(Float64(2.0 * pi) * n) ^ Float64(Float64(1.0 - k) / 2.0)))
end
function code(k, n)
	tmp = 0.0
	if (k <= 2.8288719500201867e-28)
		tmp = Float64(sqrt(n) * sqrt(Float64(2.0 * Float64(pi / k))));
	else
		tmp = sqrt(Float64((Float64(-2.0 * Float64(pi / Float64(-1.0 / n))) ^ Float64(1.0 - k)) / k));
	end
	return tmp
end
function tmp = code(k, n)
	tmp = (1.0 / sqrt(k)) * (((2.0 * pi) * n) ^ ((1.0 - k) / 2.0));
end
function tmp_2 = code(k, n)
	tmp = 0.0;
	if (k <= 2.8288719500201867e-28)
		tmp = sqrt(n) * sqrt((2.0 * (pi / k)));
	else
		tmp = sqrt((((-2.0 * (pi / (-1.0 / n))) ^ (1.0 - k)) / k));
	end
	tmp_2 = tmp;
end
code[k_, n_] := N[(N[(1.0 / N[Sqrt[k], $MachinePrecision]), $MachinePrecision] * N[Power[N[(N[(2.0 * Pi), $MachinePrecision] * n), $MachinePrecision], N[(N[(1.0 - k), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[k_, n_] := If[LessEqual[k, 2.8288719500201867e-28], N[(N[Sqrt[n], $MachinePrecision] * N[Sqrt[N[(2.0 * N[(Pi / k), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(N[Power[N[(-2.0 * N[(Pi / N[(-1.0 / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 - k), $MachinePrecision]], $MachinePrecision] / k), $MachinePrecision]], $MachinePrecision]]
\frac{1}{\sqrt{k}} \cdot {\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)}
\begin{array}{l}
\mathbf{if}\;k \leq 2.8288719500201867 \cdot 10^{-28}:\\
\;\;\;\;\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{{\left(-2 \cdot \frac{\pi}{\frac{-1}{n}}\right)}^{\left(1 - k\right)}}{k}}\\


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if k < 2.8288719500201867e-28

    1. Initial program 0.6

      \[\frac{1}{\sqrt{k}} \cdot {\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)} \]
    2. Applied egg-rr17.8

      \[\leadsto \color{blue}{\sqrt{\frac{{\left(2 \cdot \left(\pi \cdot n\right)\right)}^{\left(1 - k\right)}}{k}}} \]
    3. Taylor expanded in k around 0 17.8

      \[\leadsto \sqrt{\color{blue}{2 \cdot \frac{n \cdot \pi}{k}}} \]
    4. Simplified17.8

      \[\leadsto \sqrt{\color{blue}{\frac{n}{k} \cdot \left(2 \cdot \pi\right)}} \]
      Proof
      (*.f64 (/.f64 n k) (*.f64 2 (PI.f64))): 0 points increase in error, 0 points decrease in error
      (*.f64 (/.f64 n k) (Rewrite=> *-commutative_binary64 (*.f64 (PI.f64) 2))): 0 points increase in error, 0 points decrease in error
      (Rewrite<= associate-*l*_binary64 (*.f64 (*.f64 (/.f64 n k) (PI.f64)) 2)): 0 points increase in error, 0 points decrease in error
      (*.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 n (PI.f64)) k)) 2): 42 points increase in error, 37 points decrease in error
      (Rewrite<= *-commutative_binary64 (*.f64 2 (/.f64 (*.f64 n (PI.f64)) k))): 0 points increase in error, 0 points decrease in error
    5. Applied egg-rr17.8

      \[\leadsto \sqrt{\color{blue}{\frac{n}{\frac{k}{2 \cdot \pi}}}} \]
    6. Applied egg-rr0.5

      \[\leadsto \color{blue}{\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}}} \]

    if 2.8288719500201867e-28 < k

    1. Initial program 0.4

      \[\frac{1}{\sqrt{k}} \cdot {\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)} \]
    2. Applied egg-rr0.6

      \[\leadsto \color{blue}{\sqrt{\frac{{\left(2 \cdot \left(\pi \cdot n\right)\right)}^{\left(1 - k\right)}}{k}}} \]
    3. Taylor expanded in n around -inf 64.0

      \[\leadsto \color{blue}{\sqrt{\frac{e^{\left(1 - k\right) \cdot \left(-1 \cdot \log \left(\frac{-1}{n}\right) + \log \left(-2 \cdot \pi\right)\right)}}{k}}} \]
    4. Simplified0.6

      \[\leadsto \color{blue}{\sqrt{\frac{{\left(-2 \cdot \frac{\pi}{\frac{-1}{n}}\right)}^{\left(1 - k\right)}}{k}}} \]
      Proof
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 -2 (/.f64 (PI.f64) (/.f64 -1 n))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (Rewrite<= rem-exp-log_binary64 (exp.f64 (log.f64 -2))) (/.f64 (PI.f64) (/.f64 -1 n))) (-.f64 1 k)) k)): 223 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (exp.f64 (log.f64 -2)) (/.f64 (Rewrite<= rem-exp-log_binary64 (exp.f64 (log.f64 (PI.f64)))) (/.f64 -1 n))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (exp.f64 (log.f64 -2)) (/.f64 (exp.f64 (log.f64 (PI.f64))) (Rewrite<= rem-exp-log_binary64 (exp.f64 (log.f64 (/.f64 -1 n)))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (exp.f64 (log.f64 -2)) (Rewrite<= exp-diff_binary64 (exp.f64 (-.f64 (log.f64 (PI.f64)) (log.f64 (/.f64 -1 n)))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (exp.f64 (log.f64 -2)) (exp.f64 (Rewrite<= unsub-neg_binary64 (+.f64 (log.f64 (PI.f64)) (neg.f64 (log.f64 (/.f64 -1 n))))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (*.f64 (exp.f64 (log.f64 -2)) (exp.f64 (+.f64 (log.f64 (PI.f64)) (Rewrite<= mul-1-neg_binary64 (*.f64 -1 (log.f64 (/.f64 -1 n))))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (Rewrite<= exp-sum_binary64 (exp.f64 (+.f64 (log.f64 -2) (+.f64 (log.f64 (PI.f64)) (*.f64 -1 (log.f64 (/.f64 -1 n))))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (exp.f64 (Rewrite<= associate-+l+_binary64 (+.f64 (+.f64 (log.f64 -2) (log.f64 (PI.f64))) (*.f64 -1 (log.f64 (/.f64 -1 n)))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (exp.f64 (+.f64 (Rewrite<= log-prod_binary64 (log.f64 (*.f64 -2 (PI.f64)))) (*.f64 -1 (log.f64 (/.f64 -1 n))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (pow.f64 (exp.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 n))) (log.f64 (*.f64 -2 (PI.f64)))))) (-.f64 1 k)) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (Rewrite<= exp-prod_binary64 (exp.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 n))) (log.f64 (*.f64 -2 (PI.f64)))) (-.f64 1 k)))) k)): 0 points increase in error, 0 points decrease in error
      (sqrt.f64 (/.f64 (exp.f64 (Rewrite<= *-commutative_binary64 (*.f64 (-.f64 1 k) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 n))) (log.f64 (*.f64 -2 (PI.f64))))))) k)): 0 points increase in error, 0 points decrease in error
  3. Recombined 2 regimes into one program.
  4. Final simplification0.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \leq 2.8288719500201867 \cdot 10^{-28}:\\ \;\;\;\;\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{{\left(-2 \cdot \frac{\pi}{\frac{-1}{n}}\right)}^{\left(1 - k\right)}}{k}}\\ \end{array} \]

Alternatives

Alternative 1
Error0.5
Cost20032
\[\sqrt{\frac{1}{k}} \cdot {\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)} \]
Alternative 2
Error0.5
Cost19968
\[{\left(\left(2 \cdot \pi\right) \cdot n\right)}^{\left(\frac{1 - k}{2}\right)} \cdot {k}^{-0.5} \]
Alternative 3
Error0.6
Cost19908
\[\begin{array}{l} \mathbf{if}\;k \leq 2.8288719500201867 \cdot 10^{-28}:\\ \;\;\;\;\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{{\left(2 \cdot \left(\pi \cdot n\right)\right)}^{\left(1 - k\right)}}{k}}\\ \end{array} \]
Alternative 4
Error18.1
Cost19844
\[\begin{array}{l} t_0 := 2 \cdot \frac{\pi}{k}\\ \mathbf{if}\;k \leq 7 \cdot 10^{+147}:\\ \;\;\;\;\sqrt{n} \cdot \sqrt{t_0}\\ \mathbf{else}:\\ \;\;\;\;{\left({\left(n \cdot t_0\right)}^{3}\right)}^{0.16666666666666666}\\ \end{array} \]
Alternative 5
Error22.3
Cost19584
\[\sqrt{n} \cdot \sqrt{2 \cdot \frac{\pi}{k}} \]
Alternative 6
Error32.1
Cost13248
\[{\left(\frac{k}{\frac{n}{\frac{0.5}{\pi}}}\right)}^{-0.5} \]
Alternative 7
Error32.8
Cost13184
\[\sqrt{\frac{n}{k \cdot \frac{0.5}{\pi}}} \]
Alternative 8
Error32.9
Cost13184
\[\sqrt{n \cdot \left(2 \cdot \frac{\pi}{k}\right)} \]
Alternative 9
Error32.8
Cost13184
\[\sqrt{\frac{2 \cdot \pi}{\frac{k}{n}}} \]

Error

Reproduce

herbie shell --seed 2022313 
(FPCore (k n)
  :name "Migdal et al, Equation (51)"
  :precision binary64
  (* (/ 1.0 (sqrt k)) (pow (* (* 2.0 PI) n) (/ (- 1.0 k) 2.0))))