рд╕рдордп-рд╕рдордп рдкрд░, рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рдмрд┐рдЯ рд╕рдЯреАрдХрддрд╛ float64
/ int64
рдЖрд╡рд╢реНрдпрдХ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ рдЙрдкрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реИ? рдПрдХ рд╡рд┐рдХрд▓реНрдк рднреАред
рдпрд╛ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдордирдорд╛рдиреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреАрдПрдирдпреВ рдПрдордкреАрдПрдлрдЖрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рд╣реИрдВред рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреА рдХрд┐рд╕рд╛рди рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреНрд╖рд┐рддрд┐рдЬ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред R рдкрд░ рдпрд╣ рдПрдХ Rmpfr рдЖрд╡рд░рдг рд╣реИ ред рдиреАрдЪреЗ рдореИрдВ рд╕реНрдХреВрд▓реА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдПрдирдбреАрдП рдХреЗ рддрд╣рдд рдбрд┐рдЬрд╛рдЗрди рдбреЗрдЯрд╛ рдХреЛ рди рдЫреВрдПрдВ) рдФрд░ рдХрдИ рдХреНрд▓рд╛рд╕рд┐рдХ рд░реЗрдХ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ, рдЬрд┐рди рдкрд░ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рд╣реИ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд╡рд╛рдВрдЯрдо рдореЗрдВ 2019/2020 рд╕реНрдХреВрд▓ рд╡рд░реНрд╖ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ 39 рд▓реЗрдВ :
рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ x рдФрд░ y рдРрд╕реА рд╣реИрдВ рдХрд┐ рдмрд╛рдПрдВ рдЕрдВрд╢ рдХреЗ рдиреАрдЪреЗ рдЕрд╕рдорд╛рдирддрд╛ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдмрдбрд╝реА рд╣реИред рдХреМрди рд╕рд╛ рдЕрдзрд┐рдХ рд╣реИ: x рдпрд╛ y?

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ (рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрд╕рдорд╛рдирддрд╛) рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
рд╣рдо рднрд┐рдиреНрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВред рдЖрдк рддреБрд░рдВрдд рдЕрдВрддрд┐рдо рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдбреЗрдореЛрд╕реНрдХреЛрдкреАрди рдХреЗ рд▓рд┐рдП mpfr
, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЫреЛрдЯреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред
рд╣рдо рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВlibrary(tidyverse)
library(magrittr)
options(digits=15)
frec <- function(stopval, n, x){
res <- ifelse(n == stopval,
(stopval - 1) + stopval/(stopval + 1 + x),
(n - 1 ) + n / (frec(stopval, n + 2, x))
)
res
}
frec_wrap <- function(stopval, x){
res <- frec(stopval = stopval, n = 1, x = x)
print(glue::glue("{stopval}: {res}"))
res
}
sol_df <- tibble(stopval = seq(1, 29, by = 2)) %>%
mutate(val1 = purrr::map_dbl(stopval, frec_wrap, x = 1),
val2 = purrr::map_dbl(stopval, frec_wrap, x = 5),
delta = val1 - val2)
рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдмреБрд░реА рдХрд┐рд╕реНрдордд рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 14 рд╡реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рд╕реНрдЯреЙрдк рдирдВрдмрд░ = 29) рдкрд░, рд╕рдЯреАрдХрддрд╛ рд╣рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рдХреЗ рд╕рд╛рде рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЖрдкрдХреЛ 2019 рддрдХ рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!

? , Rmfpr
. тАФ float64
mpfr
.
library(tidyverse)
library(magrittr)
library(Rmpfr)
frec2 <- function(stopval, n, x){
if(n == stopval){
(stopval - 1) + stopval/(stopval + 1 + x)} else {
(n - 1 ) + n / (frec2(stopval, n + 2, x))
}
}
frec2_wrap <- function(stopval, x){
.precision <- 5000
res <- frec2(stopval = mpfr(stopval, .precision),
n = mpfr(1, .precision),
x = mpfr(x, .precision)
)
print(glue::glue("{stopval}: {formatMpfr(res, drop0trailing = TRUE)}"))
res
}
sol2_df <- tibble(stopval = seq(1, 29, by = 2)) %>%
mutate(val1 = purrr::map(stopval, frec2_wrap, x = 1),
val2 = purrr::map(stopval, frec2_wrap, x = 5))
. , tibble
. .

тДЦ1:
tibble
, vctrs
. ( mpfr
S4 ) list-column. - .
, vctrs
. , :
for(jj in 1:12){
flags_df[[glue("bp_2_{jj}_T")]] <- flags_df[[glue("bp_2_{jj}_in")]] & flags_df[[glue("flag_2_{jj}")]]
flags_df[[glue("bp_2_{jj}_F")]] <- flags_df[[glue("bp_2_{jj}_in")]] & ! flags_df[[glue("flag_2_{jj}")]]
}
тДЦ2:
list-column . mpfr
list-column.
тДЦ3
rpfm
. StackOverflow . . R?
? --! R, Python! !
. RTFM, .
- тДЦ1. тАФ
tibble
. data.frame
. - тДЦ2.
rpfm
. , . data.frame
. - тДЦ3.
formatMpfr
.
.
library(tidyverse)
library(magrittr)
library(Rmpfr)
frec2 <- function(stopval, n, x){
if(n == stopval){
(stopval - 1) + stopval/(stopval + 1 + x)} else {
(n - 1 ) + n / (frec2(stopval, n + 2, x))
}
}
frec2_wrap <- function(stopval, x){
.precision <- 5000
res <- frec2(stopval = mpfr(stopval, .precision),
n = mpfr(1, .precision),
x = mpfr(x, .precision)
)
print(glue::glue("{stopval}: {formatMpfr(res, drop0trailing = TRUE)}"))
res
}
sol_df <- data.frame(stopval = seq(111, 119, by = 2)) %>%
mutate(val1 = new("mpfr", unlist(purrr::map(stopval, frec2_wrap, x = 1))),
val2 = new("mpfr", unlist(purrr::map(stopval, frec2_wrap, x = 5))),
delta = val1 - val2)
sol_txt_df <- sol_df %$%
tibble(stopval = stopval,
val1_txt = formatMpfr(val1, drop0trailing = TRUE),
val2_txt = formatMpfr(val2, drop0trailing = TRUE),
delta_txt = formatMpfr(delta, drop0trailing = TRUE))
P.S. . , . , , GNU MPFR.
тАФ ┬л R ?┬╗.