40 lines
1.1 KiB
Plaintext
40 lines
1.1 KiB
Plaintext
using Printf
|
|
# arbitrary precision
|
|
setprecision(2000)
|
|
|
|
# Task 1
|
|
function seq(n)
|
|
len = maximum(n)
|
|
r = Vector{BigFloat}(len)
|
|
r[1] = 2
|
|
if len > 1 r[2] = -4 end
|
|
|
|
for i in 3:len
|
|
r[i] = 111 - 1130 / r[i-1] + 3000 / (r[i-1] * r[i-2])
|
|
end
|
|
|
|
return r[n]
|
|
end
|
|
|
|
n = [1, 2, 3, 5, 10, 100]
|
|
v = seq(n)
|
|
println("Task 1 - Sequence convergence:\n", join((@sprintf("v%-3i = %23.20f", i, s) for (i, s) in zip(n, v)), '\n'))
|
|
|
|
# Task 2: solution with big float (precision can be set with setprecision function)
|
|
function chaoticbankfund(years::Integer)
|
|
balance = big(e) - 1
|
|
for y in 1:years
|
|
balance = (balance * y) - 1
|
|
end
|
|
|
|
return balance
|
|
end
|
|
|
|
println("\nTask 2 - Chaotic Bank fund after 25 years:\n", @sprintf "%.20f" chaoticbankfund(25))
|
|
|
|
# Task 3: solution with big float
|
|
f(a::Union{BigInt,BigFloat}, b::Union{BigInt,BigFloat}) =
|
|
333.75b ^ 6 + a ^ 2 * ( 11a ^ 2 * b ^ 2 - b ^ 6 - 121b ^ 4 - 2 ) + 5.5b ^ 8 + a / 2b
|
|
|
|
println("\nTask 3 - Siegfried Rump's example:\nf(77617.0, 33096.0) = ", @sprintf "%.20f" f(big(77617.0), big(33096.0)))
|