符å·ãªãã® 64-bit æ´æ°åã®å¤ã«é¢ãã¦å¹³æ¹æ ¹ãè¨ç®ãããå±é¢ã¯ããããããã¾ãã ããããå¤ãã®è¨èªã§ã¯ãã®ããã®é¢æ°ãç¨æããã¦ããããæµ®åå°æ°ç¹æ°åç¨ã®ã¡ã½ããã使ã人ãå¤ããã¾ãã
ä»åã¯ãããããæ¹éã妥å½ãï¼ï¼èª¤å·®ãåºãããã¨ãè¸ã¾ãã¤ã¤ãæ£ããå¤ã復å ããã®ã¯ç°¡åãï¼ï¼ã¨ãã話ã§ãã
è¨æ³ã»åæ
æµ®åå°æ°ç¹æ°åã«å¯¾ããä¸è¬çãªç¥èã¯ããã¨ãã¾ãããªã人åãã®è¨äºã¯ãã®ãã¡æ¸ãã¾ãã
å®æ° $x$ ã該å½ã®æµ®åå°æ°ç¹æ°åã®å¤ã«ä¸¸ãããã®ã $\roundp x$ ã¨æ¸ããã¨ã«ãã¾ãã
IEEE 754 ã®è¦æ ¼ã«ããã¦ãsqrt(x)
㯠$\roundp{\sqrt x\,}$ ãè¿ããã¨ãè¦å®ãã¦ããã®ã§ãããã§ã¯ãããä»®å®ãã¾ãã
note: ä»ã®é¢æ°ã®èª¤å·®ã«é¢ãã¦
GCC ã«ããã¦ãsin(x)
, log(x)
, cbrt(x)
ãªã©ã¯ã$\roundp{\sin(x)}$, $\roundp{\ln(x)}$, $\roundp{\sqrt[3]{x}\,}$ ãè¿ãã¨ã¯éãã¾ãã*1ãsqrt
ãªã©ã¯ IEEE 754 ã®è¦æ ¼ã§ required ã®æ ã«å«ã¾ããã®ã«å¯¾ããsin
ãªã©ã¯ recommended ã®æ ã«å«ã¾ããã®ã§ã建åä¸ã¯ãrecommended ã®æ¹ã¯æä¾ãã¦ãã¾ãããããã¨ãããã¨ãªã®ã§ãããããä»å¾ãæ£ç¢ºã«ä¸¸ãã (correctly-rounded) $\roundp{\sin(x)}$ ãè¿ã crsin(x)
ã®ãããªé¢æ°ãæä¾ããããï¼ã¨ã®ãã¨ã§ãã
ä»»æã®æ£è¦åæ° $x$ ã«å¯¾ãã$2^e \le x\lt 2^{e+1}$ ãæãç«ã¤ãã㪠$e$ ãä¸æã«åå¨ãã¾ãããã® $e$ ãç¨ãã¦ã$\hfloor x=2^e$ ã¨å®ç¾©ãã¾ãã $\hfloor x\le x\lt 2\hfloor x$ ã $\tfrac x2\lt\hfloor x\le x$ ãæãç«ã¡ã¾ãã ã¾ãã$x$ ãæ£æ´æ°ã®ä¸ã§ã¯ $\hfloor x\le x\le 2\hfloor x-1$ ã $\tfrac{x+1}2\le\hfloor x\le x$ ãæãç«ã¡ã¾ãã
ä¸è¨ã§ã¯ã次ã®ãããªé¢æ°ãä½ããã¨ãæ³å®ãã¾ãã
/// $\floor{\sqrt n}$ ãè¿ãã fn uint_floor_sqrt(u64 n) -> u64 { f64 tmp = (n as f64).sqrt(); // tmp ãæã¡ãã誤差ã«å¯¾ãã¦ä½ãããã®è£æ£ããã todo!() }
ã©ã®ããã«è£æ£ãè¡ããã«ã¤ãã¦ã¯ã¾ã ä¸ããªããã¨ã«ãã¾ãï¼é©å½ã«èããæ¹éããå®ã¯ããã£ããããã¨ããã®ã§ã¯ãªããèå¯ãã¼ã¹ã§èªç¶ãªã¢ã«ã´ãªãºã ãèãããããï¼ãèå¯æ¬¡ç¬¬ã§ã¯ã.sqrt()
ãããåã«ä½ããããããããããã¾ããã
ï¼ï¼ãä»®æ°é¨ã 64 bits 以ä¸ã®
long double
ãããç°å¢ãªãlong double
ã§ããã°ãããªããï¼ã
ããã¯ãã... ããããåã®ãªãè¨èªãæ³å®ãã¦ããã¨ãã®å»ºåã§ããéããã¾ãã
èå¯
note: $n \le 2^{53}$ ã§ã¯ $\roundp n=n$ ã§ããããããã大ããå ´åã¯ããã¨ã¯éããªããããæ°ãã¤ããå¿ è¦ãããã¾ãã
$\gdef\roundsqrt#1{\roundp{\sqrt{#1}\,}}$
Observation 1:
u32
ã«é¢ãã¦ã¯ããã«å
¨æ¢ç´¢ã§ããããããã®ç¯å²ã f32
ï¼ä»®æ°é¨ 24 bitsï¼ã§è¨ç®ãã¦ã¿ã¾ãã
fn main() { for i in 0..=u16::MAX as u32 { for j in i * i..=i * i + 2 * i { let r = (j as f32).sqrt() as u32; assert_eq!(r, i, "failed on {}", j); } } println!("passed all tests."); }
assertion `left == right` failed: failed on 16785407 left: 4097 right: 4096
ãã¯ããããã¯ã©ããããã¾ããããªãããã§ãã $$ \floor{\roundsqrt{(2^{12}+1)^2-2}} = 2^{12}+1. $$
note: f64
ã«ããã¦ãã$\floor{\sqrt n}$ ãåºå®ãã¦äºåæ¢ç´¢ã使ã£ãããåºå®ããéã®æ大å¤ã試ãã¦ããéé ã«è¦ã¦ãããªã©ã§ãåæ§ã®æ¢ç´¢ãã§ãã¾ãã
æå°ã®åä¾ã¯ 4503599761588224
ã§ãä¸è¨ã®ããã«ãªã£ã¦ãã¾ãã
$$
\floor{\roundsqrt{(2^{26}+1)^2-1}} = 2^{26}+1.
$$
$(2^{\floor{p/2}}+1)^2$ ããå°ãå°ãããããã§ã ãã«ãªã£ã¦ãã¾ãæãã§ããããã
Observation 2:
ã§ã¯ã$+1$ ã®èª¤å·®ã¯è¨±å®¹ãã¦ã¿ã¾ãããã
fn main() { for i in 0..=u16::MAX as u32 { for j in i * i..=i * i + 2 * i { let r = (j as f32).sqrt() as u32; assert!([i, i + 1].contains(&r), "failed on {}", j); } } println!("passed all tests."); }
passed all tests.
ããã¯ãããããã§ãã
Observation 3:
ã¨ãããã¨ã§ãu64
ã«ãã¦æ¬¡ã®ãããªé¢æ°ãèãã¦ã¿ã¾ãã
fn u64_floor_sqrt(n: u64) -> u64 { let tmp = (n as f64).sqrt() as u64; let tmp_m1 = tmp.saturating_sub(1); // if tmp >= 1 { tmp - 1 } else { tmp }; // ((tmp - 1) + 1)**2 <= n, in an overflow-safe way if tmp_m1 * (tmp_m1 + 2) < n { tmp } else { tmp_m1 } }
$n = 0$ ã®å ´åãã$n = 2^{64}-1$ 㧠$2^{32}$ ãè¿ã£ã¦ããå ´åãªã©ã«ãªã¼ãã¼ããã¼ããªãããã«æ°ãã¤ãã¦ãã¾ãã ããããã±ã¼ã¹ã«æ°ãæãå¿ è¦ããªãç¶æ³ã§ã¯ãããå°ãéã«ãã£ã¦ã大ä¸å¤«ããã§ãã
fn main() { for i in 0..=u32::MAX as u64 { let actual_left = u64_floor_sqrt(i * i); let actual_right = u64_floor_sqrt(i * i + 2 * i); let expected = i; assert_eq!(actual_left, expected); assert_eq!(actual_right, expected); } println!("passed all tests."); }
passed all tests.
ããããããããã§ãã$\floor{\sqrt n}-1$ ã $\floor{\sqrt n}+2$ ã«ãªããã¨ã¯ãªãããã§ãã
$\roundp x$ ã $\sqrt x$ ã®å調æ§ãããu64_floor_sqrt
ã¯æ£å½ããã§ãã
ããã§ãu64
ã®ç¯å²ã§ã¯ããã§ããã¾ãããã§ãããã§çµãã£ã¦ãããã«ã¯ãããã§ããããã¨ãã° C++ ã«ãã㦠unsigned __int128
ã®ç¯å²ã __float128
ã§è¨ç®ããã®ãåãæ¹éã§èª¿ã¹ããã¨ã¯ã§ããªããããããå°ãæ°å¦çã«èãã¾ãã
ããããã㨠128-bit ã§ã¯åä¾ãè¦ã¤ãããããããªãããããã§ã¯ãªãããããã¾ããããã
ããã¾ã§ã®è©±ãã¾ã¨ããã¨ã次ã®ãããªãã¨ã示ãããã§ãã
Conjecture 4: ãããªãã«å¤§ãã $n$ ã«å¯¾ãã¦ã $\floor{\sqrt n} \le \roundsqrt{\roundp n} \lt \floor{\sqrt n}+2$ ãæãç«ã¤ã
ã¾ããæµ®åå°æ°ç¹æ° $\hat x$ ã¨å®æ° $x$ ã«å¯¾ãã¦ã$\roundp x = \hat x$ ã¨ãªãååæ¡ä»¶ã«ã¤ãã¦è§¦ãã¦ããã¾ãã $$ \roundp x=\hat x \impliedby \begin{cases} \hat x-\hat x\cdot 2^{-1-p} \le x\le \hat x+\hat x\cdot 2^{-p}, & \text{if }\hfloor{\hat x}=\hat x; \\ \hat x-\hfloor{\hat x}\cdot 2^{-p}\lt x\lt\hat x+\hfloor{\hat x}\cdot 2^{-p}, & \text{if }\hfloor{\hat x}\gt\hat x. \end{cases} $$ $\roundp x\ge \hat x$ ãªã©ã示ãããã¨ãã¯çå´ã®ä¸çå¼ãæãç«ã¦ã°ããã§ãã
$0\le k\le 2^{p-1}$ ãªãæ´æ° $k$ ã«å¯¾ãã¦ãæ´æ° $n\in[k^2\ldots(k+1)^2)$ ã conjecture 4 ãæºãããã¨ã示ãã¾ãã
æ´æ°æ§ãã $n\in[k^2\ldots k(k+2)]$ ã§ãããã¨ã¨ãå調æ§ãã $$\roundsqrt{\roundp{k^2}}\le\roundsqrt{\roundp n}\le \roundsqrt{\roundp{k(k+2)}}$$ ã§ãããã¨ã«æ³¨æãã¾ãããã®ããã $$ k\le \roundsqrt{\roundp{k^2}} \wedge k+2\gt \roundsqrt{\roundp{k(k+2)}} $$ ã示ãã°ååã§ããèãã¦ããç¶æ³ã«åããã$\roundp{k^2}\lt\infty$ ã§ããåæã¨ãã¾ãã ã¾ãããã®ç¯å²ã§ $\roundp k=k$ ãæãç«ã¤ãã¨ã«æ³¨æãã¦ããã¾ãã å ãã¦ã$p\ge 3$ ãä»®å®ãã¦ãããã¨ã«ãã¾ãã
Lemma 5: $0\le k\le 2^p$ ãªãæ´æ° $k$ ã«å¯¾ãã¦ã$k\le \roundsqrt{\roundp{k^2}}$ ãæãç«ã¤ã
disclaimer: ãã¨ã㨠$k\le 2^p$ ã§ç¤ºãäºå®ã ã£ãã®ã§ãããLemma 6 ã $k\le 2^{p-1}$ ã§ããæãç«ããªãããã¨ãããã¨ã Lemma 5 ã示ããå¾ã«ãããã¾ãããLemma 5 ãç´ãã®ãé¢åã ã£ãã®ã§ãã®ã¾ã¾ã«ãªã£ã¦ãã¾ãã
Proof
ãã $e$ ãåå¨ã㦠$k = 2^e$ ã®ã¨ãã$2^{2e} = 2^{p-1}\times 2^{2e+1-p}$ ã¨è¡¨ããããã$\roundp{2^{2e}}=2^{2e}$ ã¨ãªãã $\roundsqrt{\roundp{k^2}} = \roundsqrt{k^2} = \roundp k=k$ ãæãç«ã¤ãããªãã¡ã$k\le \roundsqrt{\roundp{k^2}}$ ã¨ãªãã
$k = 0$ ã®ã¨ããåæ§ã«ãã¦æãç«ã¤ãã¨ã示ããã
次ã«ã$k = 2^e$ ãªã $e$ ãåå¨ããªãã㤠$k\ge1$ ã¨ãã $$ k-\hfloor{k}\cdot 2^{-p}\lt \sqrt{\roundp{k^2}} $$ ã示ããããããè©ä¾¡ããã¨ã $$ \begin{aligned} k-\hfloor k\cdot 2^{-p} &\le k-\tfrac{k+1}2\cdot 2^{-p} \\ &= (1-2^{-1-p})k - 2^{-1-p}; \\ \sqrt{\roundp{k^2}} &\ge \sqrt{k^2-\hfloor{k^2}\cdot 2^{-p}} \\ &\ge \sqrt{k^2-k^2\cdot 2^{-p}} \\ &= k\cdot \sqrt{1-2^{-p}} \end{aligned} $$ ã¨ãªãã®ã§ã$(1-2^{-1-p})k-2^{-1-p}\lt k\cdot\sqrt{1-2^{-p}}$ ã示ãã°ãããéè² ã§ãããã¨ã¯æããã§ããããäºä¹ã®å·®ãèãã $$ \begin{aligned} &\phantom{{}={}} (k\cdot\sqrt{1-2^{-p}})^2 - ( (1-2^{-1-p})k-2^{-1-p})^2 \\ &= (1-2^{-p})k^2 - ( (1-2^{-1-p})k-2^{-1-p})^2 \\ %&= (1-2^{-p})k^2 - ( (1-2^{-1-p})^2k^2-2^{-p}\cdot(1-2^{-1-p})k+2^{-2-2p}) \\ %&= (1-2^{-p})k^2 - ( (1-2^{-p}+2^{-2-2p})k^2-2^{-p}\cdot (1-2^{-1-p})k+2^{-2-2p}) \\ %&= -(2^{-2-2p}\cdot k^2-2^{-p}\cdot (1-2^{-1-p})k+2^{-2-2p}) \\ %&= -2^{-2-2p}\cdot k^2+2^{-p}\cdot (1-2^{-1-p})k-2^{-2-2p} \\ %&= 2^{-p}\cdot (-2^{-2-p}\cdot k^2 + (1-2^{-1-p})k - 2^{-2-p}) \\ %&= 2^{-2p}\cdot (-2^{-2}\cdot k^2 + (2^p-2^{-1})k - 2^{-2}) \\ &= 2^{-2-2p}\cdot (-k^2 + (2^{2+p}-2)k - 1) \\ \end{aligned} $$ ã¨ãªãã
$-k^2+(2^{2+p}-2)k-1$ ã®é¨åãã主è¦é ãè² ã® $2$ 次é¢æ°ã«ãªã£ã¦ãããã¨ã«æ³¨æããã¨ãããã $k=1$ ããã³ $k=2^p$ ã§æ£ã«ãªã£ã¦ãããã¨ã示ãã°ã$1\le k\le 2^p$ ã®ç¯å²ã§æ£ã§ãããã¨ããããã $$ \begin{aligned} -1^2 + (2^{2+p}-2)\cdot 1-1 &= 4\cdot(2^p-1); \\ -(2^p)^2 + (2^{2+p}-2)\cdot 2^p-1 %&= -2^{2p} + 2^{2+2p} - 2^{1+p} - 1 &= 2^p\cdot(3\cdot 2^p-2)-1 \end{aligned} $$ ããã$p\ge 1$ ã§ãããã¯æ£ã¨ãªããã¨ããããã
以ä¸ããã$0\le k\le 2^p$ ãªãä»»æã®æ´æ° $k$ ã«å¯¾ã㦠$k\le\roundsqrt{\roundp{k^2}}$ ãæãç«ã¤ã$\qed$
Lemma 6: $0\le k\le 2^{p-1}$ ãªãæ´æ° $k$ ã«å¯¾ãã¦ã$k+2\gt \roundsqrt{\roundp{k(k+2)}}$ ãæãç«ã¤ã
Proof
ä»»æã® $0\le k\le 2^{p-1}$ ã«å¯¾ãã¦ã $$ \sqrt{\roundp{k(k+2)}} \lt (k+2)-\hfloor{k+2}\cdot 2^{-p} $$ ã示ãã°ããã両辺ãè©ä¾¡ã㦠$$ \begin{aligned} \sqrt{\roundp{k(k+2)}} &\le \sqrt{k(k+2)+\hfloor{k(k+2)}\cdot 2^{-p}} \\ &\le \sqrt{k(k+2)+k(k+2)\cdot 2^{-p}} \\ &= \sqrt{k(k+2)}\cdot \sqrt{1+2^{-p}}; \\ (k+2)-\hfloor{k+2}\cdot 2^{-p} &\ge (k+2)-(k+2)\cdot 2^{-p} \\ &= (k+2)\cdot (1-2^{-p}) \end{aligned} $$ ã¨ãªãã®ã§ã $$ \sqrt{k(k+2)}\cdot\sqrt{1+2^{-p}} \lt (k+2)\cdot(1-2^{-p}) $$ ã示ããLemma 5 åæ§ã«ãã¦ã $$ \begin{aligned} &\phantom{{}={}} ( (k+2)\cdot(1-2^{-p}))^2 - (\sqrt{k(k+2)}\cdot\sqrt{1+2^{-p}})^2 \\ &= (k+2)^2\cdot(1-2^{1-p}+2^{-2p}) - k(k+2)\cdot(1+2^{-p}) \\ &= 2^{-2p}(k+2)\cdot\left( (2^{2p}-2^{1+p}+1)(k+2)-(2^{2p}+2^p)k\right) \\ %&= 2^{-2p}(k+2)\cdot\left( (2^{2p}-2^{1+p}+1)k+2(2^{2p}-2^{1+p}+1)-(2^{2p}+2^p)k\right) \\ %&= 2^{-2p}(k+2)\cdot\left( (-2^{1+p}+1)k+2(2^{2p}-2^{1+p}+1)-2^p\cdot k\right) \\ &= 2^{-2p}(k+2)\cdot\left( (-2^{1+p}-2^p+1)k+2(2^{2p}-2^{1+p}+1)\right) \\ \end{aligned} $$ ã¨ãªãã$(-2^{1+p}-2^p+1)k+2(2^{2p}-2^{1+p}+1)$ ã®é¨åãã主è¦é ãè² ã® $1$ 次é¢æ°ã§ãããã¨ã«æ³¨æããã¨ãããã $k=0$ ããã³ $k=2^{p-1}$ ã§æ£ã§ãããã¨ã示ãã°ã$0\le k\le 2^{p-1}$ ã®ç¯å²ã§ãããæ£ã§ãããã¨ããããã$p\ge 3$ ã®åæã§ã $$ \begin{aligned} &\phantom{{}={}} (-2^{1+p}-2^p+1)\cdot 0+2(2^{2p}-2^{1+p}+1) \\ &= 2^{1+2p}-2^{2+p}+1; \\ &\phantom{{}={}} (-2^{1+p}-2^p+1)\cdot 2^{p-1}+2(2^{2p}-2^{1+p}+1) \\ &= 2^{1+2p}+2^{p-1} - (2^{2p}+2^{2p-1}+2^{2+p}) + 2 \\ &\ge 2^{1+2p}+2^{p-1} - 2^{1+2p} + 2 \\ &\gt 2^{p-1}+2 \end{aligned} $$ ããããããã¯æ£ã§ãããã¨ããããã
ããªãã¡ã$0\le k\le 2^{p-1}$ ãªãæ´æ° $k$ ã«å¯¾ãã¦ã$k+2\gt \roundsqrt{\roundp{k(k+2)}}$ ãæãç«ã¤ã$\qed$
ãã£ã¦ãLemmata 5â6 ããã$0\le n\le 2^{2(p-1)}$ ãªãæ´æ° $n$ ã«å¯¾ã㦠$$\floor{\sqrt{n}} \le \floor{\roundsqrt{\roundp n}} \le \floor{\sqrt{n}}+1$$ ãæãç«ã¡ã¾ããããªãã¡ãä¸è¨ã®é¢æ°ã®æ£å½æ§ã示ããããã¨ã«ãªãã¾ãã
note: (n as f64).sqrt() as u64
ã§è¨ç®ãã¦ããã®ã $\floor{\roundsqrt{\roundp n}}$ ã§ããn as f64
ã $\roundp n$ ã«ãx.sqrt()
ã $\roundsqrt x$ ã«ãr as u64
ã $\floor r$ ã«å¯¾å¿ãã¾ãã
å®è£ ä¾
Rust
fn u64_floor_sqrt(n: u64) -> u64 { let tmp = (n as f64).sqrt() as u64; let tmp_m1 = tmp.saturating_sub(1); if tmp_m1 * (tmp_m1 + 2) < n { tmp } else { tmp_m1 } }
uint64_t uint64_floor_sqrt(uint64_t n) { if (n == 0) return 0; uint64_t tmp_m1 = std::sqrt(n) - 1; return tmp_m1 * (tmp_m1 + 2) < n ? tmp_m1 + 1 : tmp_m1; }
def int_floor_sqrt(n: int) -> int: tmp = int(n**0.5) return tmp if tmp**2 <= n else tmp - 1
ä¸è¨ã®ã±ã¼ã¹ã§ãã¹ããã¦ãã¾ãã
$n$ | $\floor{\sqrt n}$ |
---|---|
$0$ | $0$ |
$1$ | $1$ |
$(2^{26}+1)^2-1$ | $2^{26}$ |
$(2^{26}+1)^2$ | $2^{26}+1$ |
$2^{64}-1$ | $2^{32}-1$ |
ãã¨ãã
ã¤ããã¾ãããããªããããã¾ããã
証æã¯ä¸æ¦ iPad ã§ä¸æ¸ãããã¦ããã®ã§ãããçµçãã段éã«ãªã£ã¦ç¬¦å·ãééã£ã¦ãããã¨ã«æ°ã¥ããããææ°é¨ã®ç¬¦å·ãééã£ã¦ãããã示ãããå½é¡ãéã£ã¦ãããã§æ£ã ã§ããã ä¸æ¸ãã®è¨¼æããã®ã¾ã¾åãã®ã§ã¯ãªããçµçããªããã¾ãå¥éèãã¦ããã®ã§ããããããããªå¼æ¸ããè¨æ¶ãªããªãï¼ãã¨ããã¨ããã§æ°ã¥ããããã¦ãã¾ãã
ãã¦ãããããç¨åº¦ã¯æµ®åå°æ°ç¹æ°ã¨ã仲ãããªã£ã¦ããããããªãããªã¨ããæ°æã¡ãããã¾ãã
åå¿è
ã®é ããå¹³æ¹æ ¹ã sqrt(n)
ã§æ±ããã®ã¯èª¤å·®ãåºã¡ãããã¨èãã¦ãè¿ãå¤ã® ±30 ãããåå¾ãæ¢ããããªã³ã¼ããæ¸ãã¦ããã®ãæãããã§ãã
ã¾ããä»åã®è©±ãè¸ã¾ããã¨ãç´ æ°å¤å®ã®ã¨ãã«ã«ã¼ãã®ä¸éã i <= sqrt(n)
ã¨ããã®ã¯æ£å½ããã¨ãããã¨ããããã¾ããã
ç´æ°åæã«ã¤ãã¦ã¯ã©ãã§ãããããã¾ãèãã¦ãã¾ããããå°ãªãã¨ã u64
ã»f64
ã§å
¨æ¢ç´¢ããéãã§ã¯ã$n=i\cdot(i+1)$ ã®ã¨ã $\floor{\roundsqrt{\roundp n}}=i$ ã¨ãªãããã ã£ãã®ã§ãéè¤ãã¦åæããããã¨ã¯ãªããããªæ°ããã¾ãã
ãããã§ããã§ããããã
ä»åã®è©±ã¯ãããæ°åã®ä¸ã§ã競ããæèã«æ¯è¼çè¿ãããªæ°ããã¾ãã
ã¨ã¯ããããã®è¨äºãè¦ã¦ããªãã»ã©ï¼ãã¨ãªã£ã¦ãrated ã®ã³ã³ãã¹ãã§ã f64
ãã¼ã¹ã®å®è£
ã§å¹³æ¹æ ¹ãæ±ãã人ãããããªããªãåæ°ããããªã¨ããæ°ããã¾ãã
ãããªãã¨ããªãããã
証æãåã ã£ãã¨ãã«è²¬ä»»ãåãã®ã¯å«ãªã®ã§ãåèªã§è¨¼æãç´ãã¦ã»ããæ°ã¯ãã¾ãã
å½åã¯ãã®è¨äºã¯ãæ¸ãäºå®ãªã¹ããã«å«ã¾ãã¦ããªãã£ããããäºåãã¦ãããæµ®åå°æ°ç¹æ°åå¿è åããã®è¨äºã¯æ¬¡ã®æ¬¡ã«ãªãããã§ããããããã
ããã
ãããã§ãã
*1:ãæéæ¡ãªã®ã§ãæ°å¦çãªå³å¯ãªå¤ããã¯èª¤å·®ãåºã¦å½ç¶ãã¨ãã話ã§ã¯ãªãããç¡é精度ã§è¨ç®ããå¤ãæ£ç¢ºã«ä¸¸ããå¤ã欲ããããããã¨ã¯ç°ãªãå¤ãè¿ã£ã¦ããããã¨ãã話ã§ãã