# Alterna AI chapter 05: verified standalone examples
x,y,eta = 2,1,.1
gx,gy = 2*x,6*y
nx,ny = x-eta*gx,y-eta*gy
assert abs(nx*nx+3*ny*ny-3.04)<1e-12


targets = [-1,1,3,5]
theta = 0
gradients = [theta-t for t in targets]
assert sum(gradients)/4 == -2
assert sum(gradients[:2])/2 == 0


g, beta1, beta2 = 4,.9,.999
m, v = (1-beta1)*g,(1-beta2)*g*g
mhat, vhat = m/(1-beta1),v/(1-beta2)
assert abs(mhat-4)<1e-12 and abs(vhat-16)<1e-12


from math import hypot
g,c = [3,4],2
factor = min(1,c/hypot(*g))
clipped = [factor*v for v in g]
assert abs(hypot(*clipped)-2)<1e-12

print('Chapter 05: 4 examples PASS')
