func (factory *regionNumericsFactory) Build() region.RegionNumerics {
	switch factory.desc.NumericsStrategy {
	case config.NativeNumericsMode:
		app := makeNativeRegionFacade(factory.desc, factory.baseApp, factory.provider)
		nativeApp := nativeregion.Make(app)
		return &nativeApp
	case config.BigFloatNumericsMode:
		app := makeBigRegionFacade(factory.desc, factory.baseApp, factory.provider)
		bigApp := bigregion.Make(app)
		return &bigApp
	default:
		log.Panic("Invalid NumericsStrategy", factory.desc.NumericsStrategy)
		return nil
	}
}
func TestSampleDivs(t *testing.T) {
	const pWidth = 100
	const pHeight = 100
	const iLimit = 255
	const dLimit = 1.42
	const maxRegSz = 10
	const samples = 100
	const natMin = complex(-2.0, -2.0)
	const natMax = complex(2.0, 2.0)
	const prec = 53

	bigMin := bigbase.MakeBigComplex(real(natMin), imag(natMax), prec)
	bigMax := bigbase.MakeBigComplex(real(natMax), imag(natMax), prec)

	mockBase := base.MockRenderApplication{}
	mockBase.PictureWidth = pWidth
	mockBase.PictureHeight = pHeight
	mockBase.Base.IterateLimit = iLimit
	mockBase.Base.DivergeLimit = dLimit
	mockBase.Base.FixAspect = true

	regConfig := region.RegionConfig{}
	regConfig.CollapseSize = maxRegSz
	regConfig.Samples = samples

	bigCoords := bigbase.MockBigCoordProvider{}
	bigCoords.UserMin = bigMin
	bigCoords.UserMax = bigMax
	bigCoords.Prec = prec

	// This business is over complicated
	bigProvider := region.MockRegionProvider{}
	bigProvider.RegConfig = regConfig
	bigProvider.RegionFactory = fRegFactory(func() region.RegionNumerics {
		app := &MockRenderApplication{}
		app.MockRegionProvider = bigProvider
		app.MockRenderApplication = mockBase
		app.MockBigCoordProvider = bigCoords
		bignums := Make(app)
		return &bignums
	})

	nativeCoords := nativebase.MockNativeCoordProvider{}
	nativeCoords.PlaneMin = natMin
	nativeCoords.PlaneMax = natMax

	nativeProvider := region.MockRegionProvider{}
	nativeProvider.RegConfig = regConfig
	nativeProvider.RegionFactory = fRegFactory(func() region.RegionNumerics {
		app := &nativeregion.MockRenderApplication{}
		app.MockNativeCoordProvider = nativeCoords
		app.MockRegionProvider = nativeProvider
		app.MockRenderApplication = mockBase
		natnums := nativeregion.Make(app)
		return &natnums
	})

	bReg := bigProvider.RegionFactory.Build()
	nReg := bigProvider.RegionFactory.Build()

	bich, _ := bReg.SampleDivs()
	nich, _ := nReg.SampleDivs()
	bs := slurp(bich)
	ns := slurp(nich)

	for i, bInvDiv := range bs {
		nInvDiv := ns[i]
		if bInvDiv != nInvDiv {
			t.Error("Mismatch InvDiv at sample ", i,
				"native was", nInvDiv, "but big was", bInvDiv)
		}
	}
}