# Alterna AI chapter 15: verified standalone examples
from math import sqrt
s=1/sqrt(1+1e-5)
R=[1+s,-1-s]
assert abs(R[0]+R[1])<1e-12


from math import sin,cos
p,d=0,4
pe=[f(p/10000**(2*j/d)) for j in range(d//2) for f in (sin,cos)]
assert pe==[0,1,0,1]


from math import sin,cos,pi
a,b=3,4; angle=pi/2
rot=[a*cos(angle)-b*sin(angle),a*sin(angle)+b*cos(angle)]
assert abs(rot[0]+4)<1e-12 and abs(rot[1]-3)<1e-12
assert abs(sum(v*v for v in rot)-25)<1e-12


d,hidden=4,8
relu_params=d*hidden+hidden+hidden*d+d
swiglu_params=3*d*hidden
assert (relu_params,swiglu_params)==(76,96)


V,d,L=256,4,1
assert 2*V*d+V+2*d+L*(8*d*d+7*d)==2468
assert 2*V*d+V+2*d+L*(10*d*d+4*d)==2488


from math import exp
h=[1,-1]; U=[[1,0,1],[0,1,1]]
z=[sum(h[i]*U[i][j] for i in range(2)) for j in range(3)]
p=[exp(v)/sum(exp(a) for a in z) for v in z]
assert z==[1,-1,0] and abs(sum(p)-1)<1e-12

print('Chapter 15: 6 examples PASS')
