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<bits/stdc++.h>
#include<vector>
#include<list>
#include<stack>
#include<queue>
#include<algorithm>
#include<complex>
#include<cmath>
using namespace std;

#define PI 3.1415926535898

//?????§?¨?????????¨??????
typedef complex<double> P;


//?¨±?????????
#define EPS (1e-10)
//X Y??§?¨?
#define X real()
#define Y imag()

class Triangle {
    private:
    //????§???¢???3????????§?¨?
    P a,b,c;
    //????§???¢???????????????
    double edgeA, edgeB, edgeC;
    //????§???¢????§??????§??????
    double angleA, angleB, angleC;
    //??????????????????3???????§????????±???????
    double LawOfCosines ( double a, double b, double c) {
        return acos((b*b+c*c+a*a)/(2.0*b*c));
    }
    //2??????double??????????????????
    bool equal (double a,double b) {
        return (abs(a-b)<EPS)?true:false;
    }

    public:
    //?????????????????????
    Triangle(P p1, P p2, P p3) {
        a=p1;
        b=p2;
        c=p3;
        edgeB=abs(c-a);
        edgeA=abs(b-c);
        edgeC=abs(a-b);
        angleA=LawOfCosines(edgeA, edgeB, edgeC);
        angleB=LawOfCosines(edgeB, edgeC, edgeA);
        angleC=LawOfCosines(edgeC, edgeA, edgeB);
    }

    double circumscribedCircleRadius() {//?????\????????????
        return (edgeA/sin(angleA)/2.0);
    }

    double circumscribedCircleX() {//?????\????????????X??§?¨?
        double A=sin(2.0*angleA);
        double B=sin(2.0*angleB);
        double C=sin(2.0*angleC);
        return ((a.X * A + b.X * B + c.X * C)/(A+B+C));
    }

    double circumscribedCircleY() {//?????\????????????Y??§?¨?
        double A=sin(2.0*angleA);
        double B=sin(2.0*angleB);
        double C=sin(2.0*angleC);
        return ((a.Y * A + b.Y * B + c.Y * C)/(A+B+C));
    }
};


int main(){
    int mod=1000000007;
    int n;
    scanf("%d",&n);
    for (int i=0;i<n;i++) {
        double x1,y1,x2,y2,x3,y3;
        double r,xp,yp;
        scanf("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3);
        P a (x1,y1);
        P b (x2,y2);
        P c (x3,y3);
        Triangle Tr(a,b,c);
        xp=Tr.circumscribedCircleX();
        yp=Tr.circumscribedCircleY();
        r=Tr.circumscribedCircleRadius();

        printf("%.10f %.10f %.10f\n",xp,yp,r);
    }

    return 0;
}

C++: #include<stdio.h>
#include<math.h>
int main(){
	int a;
	scanf("%d",&a);
	while(a--){
		double x1,y1,x2,y2,x3,y3;
		scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
		double a1=2*(x2-x1);
		double b1=2*(y2-y2);
		double c1=x1*x1-x2*x2+y1*y1-y2*y2;
		double a2=2*(x3-x1);
		double b2=2*(y3-y1);
		double c2=x1*x1-x3*x3+y1*y1-y3*y3;
		double x=(b1*c2-b2*c1)/(a1*b2-a2*b1);
		double y=(c1*a2-c2*a1)/(a1*b2-a2*b1);
		double r=hypot(x-x1,y-y1);
		printf("%.3lf %.3lf %.3lf\n",x,y,r);
	}
}

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

struct TCoordinate
{
	double x;
	double y;
};

struct TCircle
{
	double CenterX;
	double CenterY;
	double Radius;
};

TCircle GetCircle(TCoordinate P1, TCoordinate P2, TCoordinate P3)
{
	double x1 = P1.x;
	double x2 = P2.x;
	double x3 = P3.x;
	double y1 = P1.y;
	double y2 = P2.y;
	double y3 = P3.y;
	double x, y, r;
	if(y1 == y2 || y2 == y3 || y3 == y1){
		if(y2 == y3){
			swap(x3, x1);
			swap(y3, y1);
		}else if(y3 == y1){
			swap(x2, x3);
			swap(y2, y3);
		}
		double xa = (x2 + x3) / 2;
		double ya = (y2 + y3) / 2;
		double a  = (-x3 + x2) / (y3 - y2);
		x = (x1 + x2) / 2;
		y = a * (x - xa) + ya;
	}else{
		double xa = (x1 + x2) / 2;
		double ya = (y1 + y2) / 2;
		double a  = (-x2 + x1) / (y2 - y1);
		double xb = (x2 + x3) / 2;
		double yb = (y2 + y3) / 2;
		double b  = (-x3 + x2) / (y3 - y2);
		x = (b * xb - a * xa - yb + ya) / (b - a);
		y = a * (x - xa) + ya;
	}
	r = sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
	TCircle Circle = {x, y, r};
	return Circle;
}

TCoordinate GetCenterPoint(TCoordinate P1, TCoordinate P2, TCoordinate P3)
{
	TCircle Circle = GetCircle(P1, P2, P3);
	return {Circle.CenterX, Circle.CenterY};
}

double GetRadius(TCoordinate P1, TCoordinate P2, TCoordinate P3)
{
	TCircle Circle = GetCircle(P1, P2, P3);
	return Circle.Radius;
}

int main()
{
	int n;
	cin >> n;
	for(int i = 0; i < n; i++){
		TCoordinate P1, P2, P3;
		cin >> P1.x >> P1.y >> P2.x >> P2.y >> P3.x >> P3.y;
		TCoordinate CenterPoint = GetCenterPoint(P1, P2, P3);
		double Radius = GetRadius(P1, P2, P3);
		cout << fixed << setprecision(3);
		cout << CenterPoint.x << ' ' << CenterPoint.y << ' ' << Radius << endl;
	}
	return 0;
}

C++: #include<string>
#include<vector>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<sstream>
#include<functional>
#include<map>
#include<set>
#include<cmath>
#include<iomanip>

#define REP(i,s,e) for(int i=int(s);i<=int(e);i++)
#define rep(i,n) for(int i=0;i<int(n);i++)

using namespace std;

int main(){

	int n;
	cin >> n;

	double x1,y1,x2,y2,x3,y3;
	rep(i,n){

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

	double a=x2*x2-x1*x1+y2*y2-y1*y1;
	double b=x3*x3-x1*x1+y3*y3-y1*y1;
	double c=4*(x2-x1)*(y3-y1)-4*(x3-x1)*(y2-y1);

	double xp=(2*(y3-y1)*a-2*(y2-y1)*b)/c;
	double yp=(-2*(x3-x1)*a+2*(x2-x1)*b)/c;
	double r=sqrt((xp-x1)*(xp-x1)+(yp-y1)*(yp-y1));

    cout << fixed;
    cout.precision(3);
	cout << (int)(1000.0*xp+0.5)/1000.0 << " " << (int)(1000.0*yp+0.5)/1000.0 << " " << (int)(1000.0*r+0.5)/1000.0 << endl;

	}


	return 0;
}

C++: #include <cstdio>
#include <complex>
#include <vector>
#include <cmath>

using namespace std;

#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)

typedef complex<double> P;
typedef vector<P> VP;
const double EPF = 1e-5;

#define X real()
#define Y imag()
#define EQ(x,y) (abs(x-y) < EPF)

double dot(P a, P b) {
  return (conj(a)*b).X;
}
double cross(P a, P b) {
  return (conj(a)*b).Y;
}
double distPP(P a, P b) {
  return sqrt(dot(a-b,a-b));
}
P crosspoint(P a, P b, P c, P d) {//ac & bd
  double d1 = cross(d-b,b-a);
  double d2 = cross(d-b,c-a);
  if(EQ(d1,0) & EQ(d2,0)) return a;
  if(EQ(d2,0)) return a;
  return a + (c-a)*d1/d2;
}
P normal_vector(P a) {
  P b(a.Y, a.X);
  return b;
}

int main() {
  int n;
  scanf("%d", &n);
  VP a;
  REP(j, n) {
    REP(i, 3) {
      double x,y;
      scanf("%lf %lf", &x, &y);
      a.push_back(P(x,y));
    }
    P M = (a[0]+a[1])/(P)2;
    P N = (a[1]+a[2])/(P)2;
    P M_v = normal_vector(a[0]-a[1]);
    P N_v = normal_vector(a[1]-a[2]);  
    P o = crosspoint(M, N, M+M_v, N+N_v);
    printf("%.3lf %.3lf %.3lf\n", o.X, o.Y, distPP(o,a[0]));
  }
  return 0;
}

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


int main(void){

  int n;
  cin >> n;

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

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

    double a = sqrt(pow(x2-x1,2) + pow(y2-y1,2));
    double b = sqrt(pow(x3-x2,2) + pow(y3-y2,2));
    double c = sqrt(pow(x3-x1,2) + pow(y3-y1,2));

    double r = a*b*c / sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c));

    double A = pow(x2-x1,2) + pow(y2-y1,2);
    double B = pow(x3-x2,2) + pow(y3-y2,2);
    double C = pow(x3-x1,2) + pow(y3-y1,2);
    double s = (A*(B+C-A) + B*(C+A-B) + C*(A+B-C));


    double x = A*(B+C-A) / s;
    double y = B*(C+A-B) / s;
    if(x == 0){
      x = 0;
    }
    if(y == 0){
      y=0;
    }

    printf("%.3f %.3f %.3f\n",x,y,r);

  }




  return 0;
}