matrix([2,1,-2],[1,-1,-2],[1,1,-1])^^(-1);

matrix([-1,1,-2],[3,-2,3],[3,-1,-1]).matrix([5,3,-1],[12,7,-3],[3,2,-1]);

mmax:60;
for a:1 thru mmax do 
for b:a thru mmax do 
for c:b thru mmax do 
block(p:(a+b+c)/2,
q:p*(p-a)*(p-b)*(p-c),
if (q<=0) then go(loop),
s:sqrt(q),
if(s#floor(s)) then go(loop),
/* Enleve tous les triangles rectangles */
if(a^2-b^2-c^2=0) then go(loop),
if(b^2-a^2-c^2=0) then go(loop),
if(c^2-b^2-a^2=0) then go(loop),
aa:2*s/a,
bb:2*s/b,
cc:2*s/c,
/* Pour des mesures exactes au millimétres près sur au moins deux hauteurs*/
i:0,
if(aa*10=floor(aa*10)) then i:i+1,
if(bb*10=floor(bb*10)) then i:i+1,
if(cc*10=floor(cc*10)) then i:i+1,
if(i<3) then go(loop),
/* Pour des triangles n'ayant pas d'angle obtus */
i:0,
if(a^2+b^2-c^2<0) then i:i+1,
if(a^2+c^2-b^2<0) then i:i+1,
if(b^2+c^2-a^2<0) then i:i+1,
if(i=0) then go(loop),
/* Affichage */
display([a,b,c,s,float(aa),float(bb),float(cc)]),
loop);