Magma has routines for solving norm equations, Thue equations, index form equations and unit equations. These are documented in Section Diophantine Equations.
> x := PolynomialRing(Integers()).1; > K := NumberField([x^2-229, x^2-2]); > NormEquation(K, 3); true [ 1/3*K.1 - 16/3 ]Next we solve the same equation but come from a different angle, we will define the norm map as an element of the group ring and, instead of explicitly computing a relative extension, work instead with the implicit fixed field.
> F := AbsoluteField(K); > t := F!K.2; > t^2; 2 > A, _, mA := AutomorphismGroup(F); > S := sub<A | [ x : x in A | mA(x)(t) eq t]>; > N := map<F -> F | x:-> &* [ mA(y)(x) : y in S]>; > NormEquation(3, N); true [ -5/1*$.1 + 2/3*$.3 ]Finally, to show the effect of Raw:
> f, s, base := NormEquation(3, N:Raw); > s; [ ( 0 1 -1 1 -1 0 2 -1 -1 -1 -1 2 0 0) ] > z := PowerProduct(base, s[1]); > z; -5/1*$.1 + 2/3*$.3 > N(z); 3