#0JvQtdGJ0LXQvdC60L4=
import numpy as np
# 2
print("\t<< task 2 >>")
term = np.float32(1.);
sum_val = np.float32(2.);
while(sum_val > np.float32(1.)):
eps = term;
term /= np.float32(2.);
sum_val = np.float32(1.) + term;
print(eps);
# 3
print("\t<< task 3 >>")
term = np.float64(1.);
sum_val = np.float64(2.);
while(sum_val > np.float64(1.)):
eps = term;
term /= np.float64(2.);
sum_val = np.float64(1.) + term;
print(eps);
# 4
print("\t<< task 4 >>")
value = np.float32(8.8)
epc = np.spacing(value)
print(epc)
# 5
print("\t<< task 5 >>")
value = np.float64(8.8)
epc = np.spacing(value)
print(epc)
# 6
print("\t<< task 6 >>")
def solve_sqrt(target, tolerance):
x = target / 2.0
iterations = 0
while True:
iterations += 1
next_x = (x + target / x) / 2
if abs(next_x - x) < tolerance:
return next_x, iterations
x = next_x
test_tolerances = [1e-1, 1e-3, 1e-6, 1e-9, 1e-12, 1e-15]
target_number = 7
for tol in test_tolerances:
root, count = solve_sqrt(target_number, tol)
print(f"{tol}\t{root}\t{count}")
IzBKdlF0ZEdKMExYUXZkQzYwTDQ9CmltcG9ydCBudW1weSBhcyBucCAKCgojIDIKcHJpbnQoIlx0PDwgdGFzayAyID4+IikKdGVybSA9IG5wLmZsb2F0MzIoMS4pOwpzdW1fdmFsID0gbnAuZmxvYXQzMigyLik7IAoKd2hpbGUoc3VtX3ZhbCA+IG5wLmZsb2F0MzIoMS4pKToKICAgIGVwcyA9IHRlcm07CiAgICAKICAgIHRlcm0gLz0gbnAuZmxvYXQzMigyLik7CiAgICBzdW1fdmFsID0gbnAuZmxvYXQzMigxLikgKyB0ZXJtOwoJCnByaW50KGVwcyk7ICAKCiMgMwpwcmludCgiXHQ8PCB0YXNrIDMgPj4iKQp0ZXJtID0gbnAuZmxvYXQ2NCgxLik7CnN1bV92YWwgPSBucC5mbG9hdDY0KDIuKTsgCgp3aGlsZShzdW1fdmFsID4gbnAuZmxvYXQ2NCgxLikpOgogICAgZXBzID0gdGVybTsKICAgIAogICAgdGVybSAvPSBucC5mbG9hdDY0KDIuKTsKICAgIHN1bV92YWwgPSBucC5mbG9hdDY0KDEuKSArIHRlcm07CgpwcmludChlcHMpOwoKIyA0CnByaW50KCJcdDw8IHRhc2sgNCA+PiIpCnZhbHVlID0gbnAuZmxvYXQzMig4LjgpCmVwYyA9IG5wLnNwYWNpbmcodmFsdWUpCnByaW50KGVwYykKCiMgNQpwcmludCgiXHQ8PCB0YXNrIDUgPj4iKQp2YWx1ZSA9IG5wLmZsb2F0NjQoOC44KQplcGMgPSBucC5zcGFjaW5nKHZhbHVlKQpwcmludChlcGMpCgojIDYKcHJpbnQoIlx0PDwgdGFzayA2ID4+IikKZGVmIHNvbHZlX3NxcnQodGFyZ2V0LCB0b2xlcmFuY2UpOgogICAgeCA9IHRhcmdldCAvIDIuMCAKICAgIGl0ZXJhdGlvbnMgPSAwCiAgICAKICAgIHdoaWxlIFRydWU6CiAgICAgICAgaXRlcmF0aW9ucyArPSAxCiAgICAgICAgbmV4dF94ID0gKHggKyB0YXJnZXQgLyB4KSAvIDIKCiAgICAgICAgaWYgYWJzKG5leHRfeCAtIHgpIDwgdG9sZXJhbmNlOgogICAgICAgICAgICByZXR1cm4gbmV4dF94LCBpdGVyYXRpb25zCiAgICAgICAgCiAgICAgICAgeCA9IG5leHRfeAoKdGVzdF90b2xlcmFuY2VzID0gWzFlLTEsIDFlLTMsIDFlLTYsIDFlLTksIDFlLTEyLCAxZS0xNV0KdGFyZ2V0X251bWJlciA9IDcKCgoKZm9yIHRvbCBpbiB0ZXN0X3RvbGVyYW5jZXM6CiAgICByb290LCBjb3VudCA9IHNvbHZlX3NxcnQodGFyZ2V0X251bWJlciwgdG9sKQogICAgcHJpbnQoZiJ7dG9sfVx0e3Jvb3R9XHR7Y291bnR9IikKCgo=