internal Inequality(GenerationKey generationKey) { Random rnd = new Random(generationKey.Seed); settings = generationKey.Settings; Fraction bigFraction = new Fraction(generationKey); BigFraction = bigFraction; Answer = bigFraction.Answer; Sign = bigFraction.Sign ? "<" : ">"; Sign += Answer.StrictInequality ? "" : "="; if (Sign == "<=") { Sign = "⩽"; } else if (Sign == ">=") { Sign = "⩾"; } GenerationKey = generationKey; if (!settings.OneFraction) { GenerateLeftAndRightSides(generationKey); } else { bigFraction.MultiplyPolynominal(generationKey.Seed, settings); LeftSide = new List <Fraction> { bigFraction }; RightSide = new List <Fraction>(); } if (settings.PowerFunc && Answer.IsPowerBorders) { Fraction root = rnd.Next(-50, 51); Polynomial argument = new Polynomial("x", root); PowerFunc powFunc = new PowerFunc(argument, Answer.PowerBase); Subs(powFunc); } else if (settings.Radical && Answer.MinPoint() >= (double)0 && Answer.MaxPoint() > (double)10) { Fraction root = rnd.Next(-200, 201); Polynomial argument = new Polynomial("x", root); Radical radical = new Radical(argument); Subs(radical); } else if (settings.Log && Answer.MinPoint() >= (double)-10 && Answer.MaxPoint() <= (double)10 && Answer.AreAllPointsInteger()) { Fraction root = rnd.Next(-100, 100); Polynomial argument = new Polynomial("x", root); int rndBase = rnd.Next(6) == 0 ? 2 : 3; Fraction @base = Answer.MinPoint() >= (double)-5 && Answer.MaxPoint() <= (double)5 ? rndBase : 2; Log log = new Log(argument, @base); Subs(log); } }