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++: //0010 Circumscribed Circle of A Triangle.
/*
½ÊãÌ_ (x1, y1)(x2, y2)(x3, y3) ð¸_Æµ½Op`Ì
OÚ~ÌSÀW(xp, yp)Æ¼a r ðoÍµÄI¹·évOðì¬µÄ­¾³¢B
x1, y1, x2, y2, x3, y3, xp, yp ÍA»ê¼ê -100 Èã 100 ÈºÌÀÆµÜ·B 

ÅÉf[^ZbgÌnª^¦çêÜ·
oÍÍA¬_Èºæ4ÅlÌÜüµÄAxp, yp, rð¼pXy[XÅæØÁÄ­¾³¢
*/

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;


//¼a@http://blog.livedoor.jp/calc/archives/9248011.html
//OS_@http://homepage2.nifty.com/gis_yasu21/sub1.htm

template<class T>
struct Point
{
	T x, y;
	Point(){}
	Point(T x, T y):x(x),y(y){}
};
template<class T>
T Square(const T &x)
{
	return x*x;
}
template<class T>
T Distance(const Point<T> &a, const Point<T> &b)
{
	return sqrt( Square(a.x-b.x) + Square(a.y-b.y) );
}

int main(void)
{
	const int N = 3;
	int n;
	Point<double> p[N], o;
	double r;
	int i, j;

	cin >> n;
	for(i = 0; i < n; i++)
	{
		for(j = 0; j < N; j++)
			cin >> p[j].x >> p[j].y;

		//wÌö®ÅOÚ~ÌÊÏðßé
		double a, b, c, s, S;
		a = Distance(p[1], p[2]);
		b = Distance(p[2], p[0]);
		c = Distance(p[0], p[1]);
		s = (a+b+c)/2;
		S = sqrt(s*(s-a)*(s-b)*(s-c));
		//abc/4SªOS~Ì¼a@¿ÈÝÉS/sÍàS~Ì¼a
		r = (a*b*c) / (4*S);

		//S = (1/2)*bc*sinAæè
		double sinA, sinB, sinC;
		sinA = 2*S/b/c;
		sinB = 2*S/c/a;
		sinC = 2*S/a/b;
		//]·èæèAa^2 = b^2 + c^2 - 2bc*cosA
		double cosA, cosB, cosC;
		cosA = (Square(b)+Square(c)-Square(a)) / (2*b*c);
		cosB = (Square(c)+Square(a)-Square(b)) / (2*c*a);
		cosC = (Square(a)+Square(b)-Square(c)) / (2*a*b);
		//sin(2A) = 2*sinA*cosA
		double sin2A, sin2B, sin2C;
		sin2A = 2*sinA*cosA;
		sin2B = 2*sinB*cosB;
		sin2C = 2*sinC*cosC;
		//OS~ÌXÀWÍA(x1*sin2A + x2*sin2B + x3*sin2C) / (sin2A+sin2B+sin2C)AyÀWà¯l
		o.x = (p[0].x*sin2A + p[1].x*sin2B + p[2].x*sin2C) / (sin2A + sin2B + sin2C);
		o.y = (p[0].y*sin2A + p[1].y*sin2B + p[2].y*sin2C) / (sin2A + sin2B + sin2C);

		
		//¬_Èºà\¦·éæ¤ÉµA¬_æ4ðlÌÜü·é
		cout << setprecision(3);
		cout << setiosflags(ios::fixed);
		cout << o.x << ' ' << o.y << ' ' << r << endl;
	}

	return 0;
}

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

int main() {
    int n;
    double x1, y1, x2, y2, x3, y3;
    double px, py, r;
    
    cin >> n;
    while(n){
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        px = ((y1 - y3) * (y1 * y1 - y2 * y2 + x1 * x1 - x2 * x2) - (y1 - y2) * (y1 * y1 - y3 * y3 + x1 * x1 - x3 * x3)) / (2 * (y1 - y3) * (x1 - x2) - 2 * (y1 - y2) * (x1 - x3));
        py = ((x1 - x3) * (x1 * x1 - x2 * x2 + y1 * y1 - y2 * y2) - (x1 - x2) * (x1 * x1 - x3 * x3 + y1 * y1 - y3 * y3)) / (2 * (x1 - x3) * (y1 - y2) - 2 * (x1 - x2) * (y1 - y3));
        r = sqrt((x1 - px) * (x1 - px) + (y1 - py) * (y1 - py));
        
        n--;

        printf("%.3f %.3f %.3f\n", px, py, r);
    }
    return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
 
#define REP(i,s,n) for(int i=s;i<n;++i)
#define rep(i,n) REP(i,0,n)
#define SORT(c) sort((c).begin(),(c).end())
#define IINF INT_MAX
#define LLINF LLONG_MAX
 
typedef long long ll;
typedef pair<int, int> ii;
 
int main(){

	int n;
	cin >> n;
	rep(i, n){
		double x1, y1, x2, y2, x3, y3;
		cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
		double vx21, vx31, vy21, vy31, tmp1, tmp2;
		vx21 = 2 * (x1 - x2);
		vx31 = 2 * (x1 - x3);
		vy21 = 2 * (y1 - y2);
		vy31 = 2 * (y1 - y3);
		tmp1 = x1 * x1 + y1 * y1 - x2 * x2 - y2 * y2;
		tmp2 = x1 * x1 + y1 * y1 - x3 * x3 - y3 * y3;
		
		double x, y, r;
		x = (vx31 * tmp1 - vx21 * tmp2) / (vx31 * vy21 - vx21 * vy31);
		y = (vy21 * tmp2 - vy31 * tmp1) / (vy21 * vx31 - vy31 * vx21);
		r = sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y));
		
		printf("%.3lf %.3lf %.3lf\n", x, y, r);
		
	}
 
	return 0;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <cmath>
#include <complex>
using namespace std;

typedef double D;
typedef complex<D> P;
const D EPS = 1e-9;
#define X real()
#define Y imag()
#define LE(n,m) ((n) < (m) + EPS)
#define GE(n,m) ((n) + EPS > (m))
#define EQ(n,m) (abs((n)-(m)) < EPS)

D cross(P a, P b) {
  return (conj(a)*b).Y;
}

P crosspointLL(P a1, P a2, P b1, P b2) {
  D d1 = cross(b2-b1, b1-a1);
  D d2 = cross(b2-b1, a2-a1);
  if (EQ(d1, 0) && EQ(d2, 0)) return a1;
  return a1 + d1/d2*(a2-a1);
}

P circumcenter(P a, P b, P c) {
  a = (a-c)*0.5;
  b = (b-c)*0.5;
  return c + crosspointLL(a, a*P(1,1), b, b*P(1,1));
}

int main() {
  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;

    P a, b, c;
    a = P(x1, y1);
    b = P(x2, y2);
    c = P(x3, y3);
    P ansxy = circumcenter(a, b, c);
    std::cout << ansxy.X << " " << ansxy.Y << " " << hypot(ansxy.X-x1, ansxy.Y-y1) << std::endl;
  }

}

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

double sisya(double x)
{
	int a = static_cast<int>(x * 10000);
	x = static_cast<double>(static_cast<int>(x * 1000)) / 1000;
	if(a < 0 && a%10 <= -5)
		return x-0.001;
	else if(a%10 >= 5)
		return x+0.001;
	return x;
}

double dif(double x,double y,double xx, double yy)
{
	return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));
}

int main()
{
	int n;
	double x1,x2,x3,y1,y2,y3;
	cin >> n;
	for(int i=0;i<n;i++){
		cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
		double px = sisya(max(x1,max(x2,x3)) - (max(x1,max(x2,x3)) - min(x1,min(x2,x3))) / 2 );
		double py = sisya(max(y1,max(y2,y3)) - (max(y1,max(y2,y3)) - min(y1,min(y2,y3))) / 2 );
		double r  = sisya(dif(x1,y1,px,py));
		cout << setprecision(3) << fixed << px << " " << setprecision(3) << fixed << py << " " << setprecision(3) << fixed << r <<endl;
	}
	return 0;
}

C++: #include <iostream>
#include <math.h>
using namespace std;
int main(){
	int n;
	cin >> n;
	while( n-- > 0 ){
		double x[3], y[3];		// three points
		for( int i = 0; i < 3; i++ ){
			cin >> x[i] >> y[i];
		}
		double a[2];		// the slope of a line
		double b[2];		// the intersept of a line
		double ax, ay;
		int s = 0;
		for( int i = 0; i < 2; i++ ){
			if( y[i] == y[i+1] ){
				s = i+1;
			}else{
				a[i] = -(x[i] - x[i+1]) / (y[i] - y[i+1]);
				b[i] = (y[i] + y[i+1]) / 2.0 - a[i] * (x[i] + x[i+1]) / 2.0;
			}
		}
		if( a[0] == 0 ){
			ay = b[0];
			ax = ( ay - b[1] ) / a[1];
			if( s == 2){
				ax = ( x[1] + x[2] ) / 2;
				ay = a[0] * ax + b[0];
			}else if( s == 1 ){
				ax = ( x[0] + x[1] ) / 2;
				ay = a[1] * ax + b[1];
			}else{
				ax = ( b[1] - b[0] ) / ( a[0] - a[1] );
				ay = a[0] * ax + b[0];
			}
		}else if( a[1] == 0 ){
			ay = b[1];
			ax = ( ay - b[0] ) / a[0];
			if( s == 2){
				ax = ( x[1] + x[2] ) / 2;
				ay = a[0] * ax + b[0];
			}else if( s == 1 ){
				ax = ( x[0] + x[1] ) / 2;
				ay = a[1] * ax + b[1];
			}else{
				ax = ( b[1] - b[0] ) / ( a[0] - a[1] );
				ay = a[0] * ax + b[0];
			}
		}else{
			if( s == 2){
				ax = ( x[1] + x[2] ) / 2;
				ay = a[0] * ax + b[0];
			}else if( s == 1 ){
				ax = ( x[0] + x[1] ) / 2;
				ay = a[1] * ax + b[1];
			}else{
				ax = ( b[1] - b[0] ) / ( a[0] - a[1] );
				ay = a[0] * ax + b[0];
			}
		}
		double r = sqrt( pow( x[0] - ax, 2 ) + pow( y[0] - ay, 2 ) );
		printf("%.3f %.3f %.3f\n", ax, ay, r );
	}
}