# massa actual da Voyager 1
#m=733

# velocidade corrente da Voyager 1
#v=17000

# velocidade da luz
#c=2.99792458E8

library(Rmpfr)
 c <- 3E8
 m <- 1.67E-27
 v <- 0.75*3E8


## Cálculo com expressão relativista com alta precisão (Rmpfr)
prec <- 200 # bits de precisão

m_mp <- mpfr(m, precBits = prec)
v_mp <- mpfr(v, precBits = prec)
c_mp <- mpfr(c, precBits = prec)

K_mpfr <- (m_mp * c_mp^2) * ((1/sqrt(1 - (v_mp/c_mp)^2)) - 1)

K_mpfr

format(K_mpfr, scientific = TRUE)


## Cálculo com expressão newtoniana
K_newton <- 0.5*m*v^2

K_newton

format(K_newton, scientific = TRUE)


## Cálculo  com expressão relativista com double (precisão padrão do R)
K_double <- (m * c^2) * ((1/sqrt(1 - (v/c)^2)) - 1)

K_double

format((K_mpfr/K_newton), scientific = TRUE)


K_double_mp <- mpfr(K_double, precBits = prec)
K_newton_mp <- mpfr(K_newton, precBits = prec)

(K_mpfr-K_double_mp)/K_mpfr

(K_mpfr-K_newton_mp)/K_mpfr
