# Alterna AI chapter 10: verified standalone examples
import struct
bits=struct.unpack('>I',struct.pack('>f',-192.0))[0]
assert bits>>31==1
assert (bits>>23)&255==134
assert bits&((1<<23)-1)==1<<22


import struct
half=lambda x:struct.unpack('>e',struct.pack('>e',x))[0]
assert half(1+2**-11)==1
assert half(1+3*2**-11)==1+2**-9
assert half(2**-24)==2**-24


work=[1]*8+[4]*8
grouped=sum(max(work[i:i+8]) for i in range(0,16,8))
mixed=[1,4]*8
interleaved=sum(max(mixed[i:i+8]) for i in range(0,16,8))
assert grouped==5 and interleaved==8 and sum(work)==40


A=[[1,2],[3,4]]; B=[[5,6],[7,8]]
C=[[sum(A[i][k]*B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
assert C==[[19,22],[43,50]]


m=k=n=2; b=2
qmin=(m*k+k*n+m*n)*b
qtile1=(m*k*n+k*n*m+m*n)*b
assert qmin==24 and qtile1==40


kv=2*32*1*2048*8*128*2
assert kv==268435456 and kv/2**20==256

print('Chapter 10: 6 examples PASS')
