Open in App
Not now

# Cassini’s Identity

• Difficulty Level : Medium
• Last Updated : 18 Jul, 2022

Given a number N, the task is to evaluate below expression. Expected time complexity is O(1).

` f(n-1)*f(n+1) - f(n)*f(n)`

Where f(n) is the n-th Fibonacci number with n >= 1. First few Fibonacci numbers are 0, 1, 1, 2, 3, 5, 8, 13, ………..i.e. (considering 0 as 0th Fibonacci number) Examples :

```Input : n = 5
Output : -1
f(5-1=4) = 3
f(5+1=6) = 8
f(5)*f(5)= 5*5 = 25
f(4)*f(6)- f(5)*f(5)= 24-25= -1```

Although the task is simple i.e. find n-1th, nth and (n+1)-th Fibonacci numbers. Evaluate the expression and display the result. But this can be done in O(1) time using Cassini’s Identity which states that:

`           f(n-1)*f(n+1) - f(n*n) = (-1)^n `

So, we don’t need to calculate any Fibonacci term,the only thing is to check whether n is even or odd. How does above formula work? The formula is based on matrix representation of Fibonacci numbers.

C/C++

` `

## C++

 `// C++ implementation to demonstrate working` `// of Cassini’s Identity` `#include ` `using` `namespace` `std;`   `// Returns (-1)^n` `int` `cassini(``int` `n) { ``return` `(n & 1) != 0 ? -1 : 1; }`   `// Driver Method` `int` `main()` `{` `    ``int` `n = 5;` `    ``cout << (cassini(n));`   `    ``return` `0;` `}`   `// This code is contributed by phasing17`

## Java

 `// Java implementation to demonstrate working` `// of Cassini’s Identity `   `class` `Gfg` `{` `    ``// Returns (-1)^n` `    ``static` `int` `cassini(``int` `n)` `    ``{` `       ``return` `(n & ``1``) != ``0` `? -``1` `: ``1``;` `    ``} `   `    ``// Driver method` `    ``public` `static` `void` `main(String args[])` `    ``{` `         ``int` `n = ``5``;` `         ``System.out.println(cassini(n));` `    ``}` `}`

## Python3

 `# Python implementation` `# to demonstrate working` `# of Cassini’s Identity `   `# Returns (-1)^n` `def` `cassini(n):`   `   ``return` `-``1` `if` `(n & ``1``) ``else` `1` ` `  `# Driver program` ` `  `n ``=` `5` `print``(cassini(n))` `   `  `# This code is contributed` `# by Anant Agarwal.`

## C#

 `// C# implementation to demonstrate ` `// working of Cassini’s Identity` `using` `System;`   `class` `GFG {`   `    ``// Returns (-1) ^ n` `    ``static` `int` `cassini(``int` `n)` `    ``{` `       ``return` `(n & 1) != 0 ? -1 : 1;` `    ``} ` ` `  `    ``// Driver Code` `    ``public` `static` `void` `Main()` `    ``{` `         ``int` `n = 5;` `         ``Console.Write(cassini(n));` `    ``}` `}`   `// This code is contributed by Nitin Mittal.`

## PHP

 ``

## JavaScript

 ``

Output :

`-1`

Time complexity: O(1) since only constant operations are performed

Auxiliary Space: O(1)