Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.27 KB | None | 0 0
  1. types = [Float16, Float32, Float64]
  2. sigbits = [0, 0, 0]
  3.  
  4. # Precyzja arytmetyki ma wpływ na to, ile cyfr znaczących jest
  5. # reprezentowanych dokładnie
  6. # macheps to najmniejsza dodatnia liczba t. że dodana do jedności
  7. # da w wyniku liczbę > 1.0
  8. # SUMMARUM: im mniejsza wartość machepsu, tym większa precyzja arytmetyki
  9.  
  10. #       macheps
  11. for idx in eachindex(types)
  12.     val = types[idx](2.0)
  13.     pow = 0
  14.     while 1 + val / 2 != 1
  15.         val /= 2
  16.         pow += 1
  17.     end
  18.     println(string(types[idx]))
  19.     println("result: ", val, " | m = ", pow)
  20.     sigbits[idx] = pow
  21.     println("expected: ", eps(types[idx](1.0)))
  22. end
  23.  
  24. println()
  25.  
  26. #       eta
  27. for idx in eachindex(types)
  28.     val = types[idx](1.0)
  29.     pow = 0
  30.     while val / 2 > 0
  31.         val /= 2
  32.         pow += 1
  33.     end
  34.     println(string(types[idx]))
  35.     println("result: ", val, " | ", pow)
  36.     println("expected: ", nextfloat(types[idx](0.0)))
  37. end
  38.  
  39. println()
  40.  
  41. #       max
  42. for idx in eachindex(types)
  43.     val = types[idx](1.0 - (1/2)^sigbits[idx])
  44.     pow = 0
  45.     while !isinf(types[idx](val * 2))
  46.         val  = types[idx](val *2)
  47.         pow += 1
  48.     end
  49.     println(string(types[idx]))
  50.     println("result: ", val, " | ", pow)
  51.     println("expected: ", realmax(types[idx]))
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement