|  | @@ -0,0 +1,41 @@
 | 
	
		
			
				|  |  | +package kata_test
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import (
 | 
	
		
			
				|  |  | +	"fmt"
 | 
	
		
			
				|  |  | +	"math"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	. "github.com/onsi/ginkgo"
 | 
	
		
			
				|  |  | +	. "github.com/onsi/gomega"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	. "code.osinet.fr/fgm/codewars/kyu7/floating_point_approximation"
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func assertFuzzyEquals(a float64, b float64, c float64) {
 | 
	
		
			
				|  |  | +	var inrange bool
 | 
	
		
			
				|  |  | +	var merr = 1e-12
 | 
	
		
			
				|  |  | +	fmt.Printf("a: %1.6e b: %1.6e c: %1.6e\n", a, b, c)
 | 
	
		
			
				|  |  | +	var x = Quadratic(a, b, c)
 | 
	
		
			
				|  |  | +	var smallest = math.Abs(x) < 1.e-1
 | 
	
		
			
				|  |  | +	if smallest == false {
 | 
	
		
			
				|  |  | +		fmt.Printf("This root is not the good one: %1.6e \n", x)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	var y = a*x*x + b*x + c
 | 
	
		
			
				|  |  | +	inrange = math.Abs(y) <= merr
 | 
	
		
			
				|  |  | +	if inrange == false {
 | 
	
		
			
				|  |  | +		fmt.Printf("Expected f(x) should be near: 0 , but got: %1.6e\n", y)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	//fmt.Printf("%t \n", inrange && smallest)
 | 
	
		
			
				|  |  | +	Expect(inrange && smallest).To(Equal(true))
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var _ = Describe("Test quadratic", func() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	It("should handle basic cases", func() {
 | 
	
		
			
				|  |  | +		assertFuzzyEquals(7, 4.00e+13, 8)
 | 
	
		
			
				|  |  | +		assertFuzzyEquals(9, 1.00e+14, 1)
 | 
	
		
			
				|  |  | +		assertFuzzyEquals(3, 3.00e+09, 1)
 | 
	
		
			
				|  |  | +		assertFuzzyEquals(7, 4.00e+09, 7)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +})
 |