public static ulong Normalize(ulong binary) { var series = new FibonacciSeries(Convert.ToInt32(binary)); var dirty = true; while (dirty) { dirty = false; for (var i = series.Count - 1; i > 0; i--) { if ((GetBit(binary, i) & GetBit(binary, i - 1)) > 0) { dirty = true; binary -= Convert.ToUInt64(3 << (i - 1)); binary += Convert.ToUInt64(1 << i + 1); } } if (binary % 2 > 0) { binary += 1; dirty = true; } } return(binary); }
static void Main(string[] args) { var series = new FibonacciSeries(10); foreach (int i in series) { Console.WriteLine(i); } }
internal void TestRecursive() { Console.WriteLine("------- Generating Fibonacci series Recursively---------------"); FibonacciSeries fb = new FibonacciSeries(); var series = fb.GenerateAndPrint(15); if (series != null) { Console.WriteLine(string.Join("\n", series)); } }
public void GetStringSeriesTest() { var lowerBound = Convert.ToInt32(TestContext.DataRow["lowerBound"]); var upperBound = Convert.ToInt32(TestContext.DataRow["upperBound"]); var fibonacciSeries = new FibonacciSeries(lowerBound, upperBound); var expected = TestContext.DataRow["range"].ToString(); string result = fibonacciSeries.GetStringSeries(); StringAssert.Equals(expected, result); }
public FiboInt(UInt64 source) { series = new FibonacciSeries(2); number = 0; series.UpTo(source + 1); for (var i = series.Count - 1; i >= 0; i--) { var fNum = series[i]; var bitValue = source / fNum; number += (ulong)(1 << i) * bitValue; source %= fNum; } }
/// <summary> /// Generic Test Routine /// </summary> /// <param name="count"></param> private void TestRoutine(int count) { Console.WriteLine("------- The [{0}] Number of Fibonacci Series ------ ", count); try { int[] series = FibonacciSeries.Generate(count); if (series != null) { Console.WriteLine(string.Join("\n", series)); } } catch (Exception ex) { Console.WriteLine("Error Generating {0} number of Fibonacci Series\n{1}", count, ex.Message); } Console.WriteLine("-------------------------------------------------\n\n"); }
public static FiboInt SimpleBinaryMultiply(FiboInt a, FiboInt b) { if (a.number == 2) { return(b); } if (b.number == 2) { return(a); } var series = new FibonacciSeries(a.series.Seed + b.series.Seed - 2); var first = new FiboInt(series.N); var nextA = a.series[a.series.Seed - 3]; var nextB = a.series[b.series.Seed - 3]; var other = SimpleBinaryMultiply(new FiboInt(nextA), new FiboInt(nextB)); return(first + other); }
private void Button_Click(object sender, RoutedEventArgs e) { var numberBlock = (TextBlock)CalculatorManager.Manager.FindName("numberBlock"); switch (Text) { case "F(n)": var inputNum = int.Parse(numberBlock.Text); const int limit = 32; if (inputNum < limit) { var fNum = new FibonacciSeries(inputNum).N; numberBlock.Text = fNum.ToString(); } else { CalculatorManager.Manager.ShowTip($"N should be less than {limit}"); } break; case "=": CalculatorManager.Manager.Schedule.Add(numberBlock.Text); CalculatorManager.Manager.Schedule.Display(); numberBlock.Text = String.Empty; break; case "CE": numberBlock.Text = "0"; break; case "C": CalculatorManager.Manager.Schedule.Clear(); CalculatorManager.Manager.Schedule.Display(); numberBlock.Text = String.Empty; break; } CalculatorManager.Manager.ReadyToInput = true; }