def sum( x )
	a = 0
	x.length.times { |i|
		a += x[ i ]
	}
	return a
end

def sum2( x )
	a = 0
	x.length.times { |i|
		a += x[ i ] * x[ i ]
	}
	return a
end

def sum_xy( x , y )
	a = 0 
	x.length.times { |i|
		a += x[ i ] * y[ i ]
	}
	return a
end	

def sr( x )
	a = sum2( x ) - sum( x ) ** 2 / x.length.to_f
	return a
end

def sr2( x , y )
	a = sum_xy( x , y ) - sum( x ) * sum( y ) / x.length.to_f
	return a
end

def reg_a( x , y )
	a = sr2( x , y ) / sr( x )
	return a
end

def reg_b( x , y )
	b = sum( y ) / y.length.to_f - reg_a( x , y ) * sum( x ) / x.length.to_f
	return b
end

x = [ 7 , 6 , 4 , 2 , 5 ]
y = [ 24 , 20 , 14 , 8 ,12 ]

a = reg_a( x , y )
b = reg_b( x , y )
printf( "配列xとyを回帰分析した時の傾きは%f\nです" , a )
printf( "配列xとyを回帰分析した時の傾きは%f\nです" , b )