Additive version of the Pythagorean theorem

Step 1: Fit all of the shapes into 
the two smaller squares 
(area a²+b²) 

Step 2: Fit the same 5 pieces into 
the larger (c²) square

A = (0.88, 0.16)
B = (4.92, 0.18090486988446183)
a = Segment(A, B)
B' = Rotate(B, 90*°, A)
b = Segment(B', A)
C = Point(b)
c = Segment(C, A)
α = Angle(B, A, C)
d = Segment(C, B)
poly1, e, f, g, h, D, E = Polygon(B, A, 4)
poly2, i, j, k, l, F, G = Polygon(A, C, 4)
poly3, m, n, p, q, H, I = Polygon(C, B, 4)
J = Midpoint(A, E)
r = Segment(A, D)
s = Segment(E, D)
t = Segment(B, E)
K = Midpoint(C, B)
u = Vector(K, J)
C' = Translate(C, u)
B'_1 = Translate(B, u)
C'' = Rotate(C', 90*°, J)
L = Rotate(B'_1, 90*°, J)
M = Midpoint(J, C'')
N = Midpoint(M, E)
O = (9.605429219306778, -2.4615986885374594)
v = Vector(N, O)
a_1 = Segment(B, H)
b_1 = Segment(I, H)
c_1 = Segment(C, I)
d_1 = Segment(F, C)
e_1 = Segment(G, F)
f_1 = Segment(A, G)
P = Midpoint(J, B'_1)
Q = Midpoint(P, B)
R = (10.337099665262938, 1.1967535412433388)
w = Vector(Q, R)
poly4, e_2, b'_1, j_1, c'' = Polygon(E, B'_1, J, C'')
z = (0, 0)
E' = Translate(E, z)
S = Translate(B'_1, z)
J' = Translate(J, z)
C''' = Translate(C'', z)
poly4', e', s_1, j', c''' = Polygon(E', S, J', C''')
E'' = Translate(E', v)
S' = Translate(S, v)
J'' = Translate(J', v)
T = Translate(C''', v)
poly4'', e'', s', j'', t_1 = Polygon(E'', S', J'', T)
U = Midpoint(J, L)
V = Midpoint(U, A)
W = Midpoint(J, C')
Z = Midpoint(W, D)
A_1 = (8.706519814274923, 4.855105771024137)
u_1 = Vector(V, A_1)
B_1 = (7.2013691825936785, 1.8029947678927283)
v_1 = Vector(Z, B_1)
poly5, j_2, b'_2, b_2, l_1 = Polygon(J, B'_1, B, L)
poly6, j_3, l_2, a_2, c' = Polygon(J, L, A, C')
poly7, c''_1, j_4, c'_1, d_2 = Polygon(C'', J, C', D)
J'_1 = Translate(J, w)
C_1 = Translate(B'_1, w)
B'_2 = Translate(B, w)
L' = Translate(L, w)
poly5', j'_1, c_2, b'_3, l' = Polygon(J'_1, C_1, B'_2, L')
J'_2 = Translate(J, u_1)
L'_1 = Translate(L, u_1)
A' = Translate(A, u_1)
C''_1 = Translate(C', u_1)
poly6', j'_2, l'_1, a', c''_2 = Polygon(J'_2, L'_1, A', C''_1)
C'''_1 = Translate(C'', v_1)
J'_3 = Translate(J, v_1)
C''_2 = Translate(C', v_1)
D' = Translate(D, v_1)
poly7', c'''_1, j'_3, c''_3, d' = Polygon(C'''_1, J'_3, C''_2, D')
D_1 = Midpoint(F, A)
E_1 = (6.61603282582875, -0.8728285773183699)
w_1 = Vector(D_1, E_1)
poly8, f_2, g_1, a_3, c_3 = Polygon(F, G, A, C)
F' = Translate(F, w_1)
G' = Translate(G, w_1)
A'_1 = Translate(A, w_1)
C'_1 = Translate(C, w_1)
poly8', f', g', a'_1, c'_2 = Polygon(F', G', A'_1, C'_1)