Go: package main

import (
	"fmt"
	"math"
)

func main() {
	n := scanInt()
	for i := 0; i < n; i++ {
		circleTriangle()
	}
}

func scanInt() int {
	var n int
	fmt.Scanf("%d", &n)
	return n
}

func circleTriangle() {
	var x1, y1, x2, y2, x3, y3 float64
	fmt.Scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3)
	a := 2 * (x1 - x2)
	b := 2 * (y1 - y2)
	c := 2 * (x1 - x3)
	d := 2 * (y1 - y3)
	e := x1*x1 - x2*x2 + y1*y1 - y2*y2
	f := x1*x1 - x3*x3 + y1*y1 - y3*y3

	px := (d*e - b*f) / (a*d - b*c)
	py := (a*f - c*e) / (a*d - b*c)

	r := math.Sqrt((x1-px)*(x1-px) + (y1-py)*(y1-py))
	fmt.Printf("%.3f %.3f %.3f\n", px, py, r)
}

C++: #include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

const double EPS = 1e-3;

double dist(double x1, double y1, double x2, double y2) {
  return sqrt(pow(x2-x1, 2) + pow(y2-y1, 2));
}

int main() {
  int n, p, q;
  double x[3], y[3], ta, tb, tc, sta, cta, r;
  double z[2], a, b, c, d, e, f;
  bool zf;
  cin >> n;
  for (int k=0;k<n;k++) {
    for (int i=0;i<3;i++) {
      cin >> x[i] >> y[i];
    }
    ta = dist(x[1], y[1], x[2], y[2]);
    tb = dist(x[0], y[0], x[1], y[1]);
    tc = dist(x[0], y[0], x[2], y[2]);
    cta = (ta*ta - tb*tb - tc*tc) / (2*tb*tc);
    sta = sqrt(1 - cta*cta);
    r = ta / sta / 2;

    double m[2][3] = { { 2*(x[0]-x[1]), 2*(y[0]-y[1]), x[0]*x[0]+y[0]*y[0]-x[1]*x[1]-y[1]*y[1] }, 
                       { 2*(x[0]-x[2]), 2*(y[0]-y[2]), x[0]*x[0]+y[0]*y[0]-x[2]*x[2]-y[2]*y[2] } };
    zf = false;
    for (int i=0;i<2;i++) {
      for (int j=0;j<2;j++) {
        if (m[i][j] == 0) {
          p = i; q = j;
          zf = true;
        }
      }
    }
    if (zf) {
      z[1-q] = m[p][2] / m[p][1-q];
      z[q] = (m[1-p][2] - m[1-p][1-q] * z[1-q]) / m[1-p][q];
    } else {
      a = m[0][0]; b = m[0][1]; c = m[0][2];
      d = m[1][0]; e = m[1][1]; f = m[1][2];
      z[1] = (f - d*c/a) / (e - d*b/a);
      z[0] = (c - b*z[1]) / a;
    }
    printf("%.3f %.3f %.3f\n", z[0], z[1], r);
  }
  return 0;
}

C++: #include<iostream>
#include<cmath>

using namespace std;

int main(void){
	
	int n;
	double x[3],y[3],r,a,b,c,d[2],e[2],f[2],l,m;

	cin>>n;

	for(int i=0;i<n;i++){
		
		a=b=c=r=l=m=0;
		for(int i=0;i<2;i++){
			d[i]=e[i]=f[i]=0;
		}


		cin>>x[0]>>y[0]>>x[1]>>y[1]>>x[2]>>y[2];

		a=sqrt((x[0]-x[1])*(x[0]-x[1])+(y[0]-y[1])*(y[0]-y[1]));	//ツ各ツ陛督づ個陳キツつウ
		b=sqrt((x[2]-x[1])*(x[2]-x[1])+(y[2]-y[1])*(y[2]-y[1]));
		c=sqrt((x[0]-x[2])*(x[0]-x[2])+(y[0]-y[2])*(y[0]-y[2]));	
	
		r=a*b*c/sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c));			//ツ外ツ静堋円ツづ個板シツ径
		
		d[0]=2*(x[1]-x[0]);
		e[0]=2*(y[1]-y[0]);
		f[0]=x[0]*x[0]-x[1]*x[1]+y[0]*y[0]-y[1]*y[1];
		d[1]=2*(x[2]-x[0]);
		e[1]=2*(y[2]-y[0]);
		f[1]=x[0]*x[0]-x[2]*x[2]+y[0]*y[0]-y[2]*y[2];

		l=(e[0]*f[1]-e[1]*f[0])/(d[0]*e[1]-d[1]*e[0]);
		m=(f[0]*d[1]-f[1]*d[0])/(d[0]*e[1]-d[1]*e[0]);

		l=l*1000;
		l=l+0.5;
		l=int(l);
		l=l/1000;

		m=m*1000;
		m=m+0.5;
		m=int(m);
		m=m/1000;

		r=r*1000;
		r=r+0.5;
		r=(int)(r);
		r=r/1000;
		
		printf("%0.3lf %0.3lf %0.3lf\n",l,m,r);
	}
	return 0;
}

C++: #include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
	double n;
	double x1, x2, x3,y1,y2,y3;
	cin >> n;
	cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
	double px, py, r;
	double A = (x2 - x1)*(y3 - y2) - (y2 - y1)*(x3 - x2);
	px = 0.5*((y3 - y2)*(x2*x2 - x1*x1 + y2*y2 - y1*y1) - (y2 - y1)*(x3*x3 - x2*x2 + y3*y3 - y2*y2)) / A;
	py = 0.5*(-(x3 - x2)*(x2*x2 - x1*x1 + y2*y2 - y1*y1) + (x2 - x1)*(x3*x3 - x2*x2 + y3*y3 - y2*y2)) / A;
	double a = px - x1;
	double b = py - y1;
	double r0 = (a*a + b*b);
	double r1 = sqrt(r0);
	cout << fixed << setprecision(10) << px << ' ' << py << ' ' << r1 <<  endl;
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <functional>

using namespace std;

int main()
{

	int n;
	double a,b,c,d,e,f,x1,x2,x3,y1,y2,y3;
	double ans_x,ans_y,ans_r;

	cin>>n;

	for(int i=0;i<n;i++){

		cin>>x1>>y1>>x2>>y2>>x3>>y3;


		if(y1==y2){
			ans_x=(x1+x2)/2.0;
			a=-(x3-x2)/(y3-y2);
			b=(x2+x3)/2.0; c=(y2+y3)/2.0;
			ans_y=a*(ans_x-b)+c;

		}else if(y2==y3){
			ans_x=(x2+x3)/2.0;
			a=-(x2-x1)/(y2-y1);
			b=(x1+x2)/2.0; c=(y1+y2)/2.0;
			ans_y=a*(ans_x-b)+c;

		}else if(y1==y3){
			ans_x=(x1+x3)/2.0;
			a=-(x2-x1)/(y2-y1);
			b=(x1+x2)/2.0; c=(y1+y2)/2.0;
			ans_y=a*(ans_x-b)+c;

		}else{
			a=-(x3-x2)/(y3-y2);
			b=(x2+x3)/2.0; c=(y2+y3)/2.0;
			d=-(x2-x1)/(y2-y1);
			e=(x1+x2)/2.0; f=(y1+y2)/2.0;
			
			ans_x=(a*b-d*e-c+f);
			ans_y=a*(ans_x-b)+c;
		}

		ans_r=sqrt( (x1-ans_x)*(x1-ans_x) + (y1-ans_y)*(y1-ans_y) );

		printf("%.3f %.3f %.3f\n",ans_x,ans_y,ans_r);

	}

	return 0;

}

C++: #include<stdio.h>
#include<math.h>
double sisyagonyuu3(double moto){
	if(moto>0){
		return (moto+0.0005)/100*100;
	}else if(moto==0){
		return 0;
	}else{
		return (moto-0.0005)/100*100;
	}
}
int main()
{
	int n;
	double x1[32],x2[32],x3[32],y1[32],y2[32],y3[32],p,q,r;
	double ac,ab,bc,a,b,c;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%lf%lf%lf%lf%lf%lf",&x1[i],&x2[i],&x3[i],&y1[i],&y2[i],&y3[i]);
		p=sisyagonyuu3(((y1[i]-y3[i])*(y1[i]*y1[i]-y2[i]*y2[i]+x1[i]*x1[i]-x2[i]*x2[i])-(y1[i]-y2[i])*(y1[i]*y1[i]-y3[i]*y3[i]+x1[i]*x1[i]-x3[i]*x3[i])));
		p/=(2*(y1[i]-y3[i])*(x1[i]-x2[i])-2*(y1[i]-y2[i])*(x1[i]-x3[i]));
		q=sisyagonyuu3(((x1[i]-x3[i])*(x1[i]*x1[i]-x2[i]*x2[i]+y1[i]*y1[i]-y2[i]*y2[i])-(x1[i]-x2[i])*(x1[i]*x1[i]-x3[i]*x3[i]+y1[i]*y1[i]-y3[i]*y3[i])));
		q/=(2*(x1[i]-x3[i])*(y1[i]-y2[i])-2*(x1[i]-x2[i])*(y1[i]-y3[i]));
		ab=sqrt(fabs((x3[i]-x1[i])*(x3[i]-x1[i])+(y3[i]-y1[i])*(y3[i]-y1[i])));
		ac=sqrt(fabs((x3[i]-x2[i])*(x3[i]-x2[i])+(y3[i]-y2[i])*(y3[i]-y2[i])));
		bc=sqrt(fabs((x2[i]-x1[i])*(x2[i]-x1[i])+(y2[i]-y1[i])*(y2[i]-y1[i])));
		a=bc;
		b=ac;
		c=ab;
		r=a*b*c/sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c));
		printf("%.3lf %.3lf %.3lf\n",p,q,r);
	}
	return 0;
}
/*?????\???*/

C++: #include<iostream>
#include<math.h>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
   int n;
   cin>>n;
   while(n--){
       double x1,x2,x3,y1,y2,y3;
       double px,py,r;
       scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
       double a1=(x2*x2+y2*y2-x1*x1-y1*y1)*(y3-y1);
       double b1 =(x3*x3+y3*y3-x1*x1-y1*y1)*(y2-y1);
        double a2 =(x3*x3+y3*y3-x1*x1-y1*y1)*(x2-x1);
        double b2 =(x2*x2+y2*y2-x1*x1-y1*y1)*(x3-x1);
        double c = (x2-x1)*(y3-y1)-(y2-y1)*(x3-x1);
        px=(a1-b1)/c/2;
        py=(a2-b2)/c/2;
        r = sqrt((px-x1)*(px-x1)+(py-y1)*(py-y1));
        printf("%.3f %.3f %.3f\n",px,py,r);
   }
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int INF = 1000000000;
#define REP(i,s,n) for(int i=(int)(s);i<(int)(n);i++)
#define rep(i,n) REP(i, 0, n)
typedef complex<double> Point;
const double EPS = 1.0e-9;
const double PI = acos(-1);
int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    int test; cin >> test;
    rep(casenum, test){
        Point a, b, c, m1, m2, d1, d2;
        cin >> a.real() >> a.imag() >> b.real() >> b.imag() >> c.real() >> c.imag();
        m1 = (a + b) / 2.0, m2 = (b + c) / 2.0;//????????¨???????????????, ????????¨????????????
        double s1 = arg(b - a) + PI / 2.0, s2 = arg(c - b) + PI / 2.0;//?????¨??´???????????????
        d1 = polar(1.0, s1), d2 = polar(1.0, s2);
        double k = (d1.real() * m1.imag() + d1.imag() * m2.real() - m1.real() * d1.imag() - d1.real() * m2.imag()) / (d1.real() * d2.imag() - d2.real() * d1.imag());
        double x = m2.real() + k * d2.real();
        double y = m2.imag() + k * d2.imag();
        double r = abs(Point(x, y) - a);
        printf("%.3lf %.3lf %.3lf\n", x, y, r);
    }
    return 0;
}