As indicated by @OmG, your equation resembles the equation of an n-Sphere. Trying to find all possible solutions, is therefore hard as there are an infinite amount of them. A parametrised version of all solutions can be found using a simple parametric equation:
2D: x1=cos(t1) t1 in [0,2pi[
x2=sin(t1)
3D: x1=cos(t1) t1 in [0,pi]
x2=sin(t1) cos(t2) t2 in [0,2pi[
x3=sin(t1) sin(t2)
4D: x1=cos(t1) t1 in [0,pi]
x2=sin(t1) cos(t2) t2 in [0,pi]
x3=sin(t1) sin(t2) cos(t3) t3 in [0,2pi[
x4=sin(t1) sin(t2) sin(t3)
...
See https://en.m.wikipedia.org/wiki/N-sphere
If you are just interested in solutions upto a given decimal precision, then you should not work with floating points, but integers. Example, if you are interested in all solutions x1,x2,x3 of the equation x12 + x22 + x32 = 1. Where x1,2,3 = ±a.b with a = 0 or 1 and b is 0,1,2,3,4,5,6,7,8 or 9. Then it is easier to work with integers to avoid numeric errors due to floating point approximation (See Is floating point math broken?). All you need to do is multiply your numbers with 10 (y1 = 10 · x1) and solve the equation y12 + y22 + y32 = 100 from an integer point-of-view.
A simple and brute-force algorithm, in this case, would just be:
do i=0,10
do j=0,i
if (i*i + j*j > 100) jump out of j-loop
do k=0,j
if (i*i+j*j+k*k == 100) print i,j,k
end do
end do
end do
The above will print i,j,k. However, all possible permutations and sign-changes valid solutions as well. So the solution (8,6,0) also implies that (-8,6,0), (-6,0,8), (0,8,6), ... are solutions.
So in the end, we reduced the floating-point problem to an integer problem which is easier to check numerically.
Related to this question are now:
If you want to speed things up, you might also be interested in :