title: Check Integer Overflow Multiplication
signature: checkIntegerOverflowMultiplication :: Integer -> Integer -> Bool
  checkIntegerOverflowMultiplication a b = 
test_code: import Text.Printf
  import Control.Exception (catch, SomeException)
  import Data.Typeable
  import qualified Data.List as List
  import qualified Data.Map as Map
  import qualified Data.Set as Set
  
  -- SOLUTION CODE
  -- ============================================
  
  PLACEHOLDER_CODE_BODY
  
  -- TESTING CODE 
  -- ============================================
  validateSolution :: Bool -> Bool -> Bool
  validateSolution actual expected = do
      actual == expected
  
  
  driver :: Integer -> Integer -> Bool -> String
  driver a b expected = do
      if (validateSolution (PLACEHOLDER_FN_NAME a b) expected)
          then "PASSED"
      else "FAILED"
  
  main = do
      printf "TEST-0...%s\n" (driver (37) (80) (False) )
  
      printf "TEST-1...%s\n" (driver (10000000000) (-10000000000) (True) )
  
      printf "TEST-2...%s\n" (driver (10000000000) (10000000000) (True) )
  
      printf "TEST-3...%s\n" (driver (999999999) (999999999) (False) )
  
      printf "TEST-4...%s\n" (driver (39) (36) (False) )
  
      printf "TEST-5...%s\n" (driver (92) (56) (False) )
  
      printf "TEST-6...%s\n" (driver (14) (21) (False) )
  
      printf "TEST-7...%s\n" (driver (19) (38) (False) )
  
      printf "TEST-8...%s\n" (driver (14) (82) (False) )
  
      printf "TEST-9...%s\n" (driver (88) (41) (False) )
  
source_py: def check_integer_overflow_multiplication(a, b):
      if ((a == 0) or (b == 0)):
          return False
      result = (a * b)
      if ((result >= 9223372036854775807) or (result <= (- 9223372036854775808))):
          result = 0
      if (a == (result // b)):
          print((result // b))
          return False
      else:
          return True
source_cpp: bool check_integer_overflow_multiplication(long long a, long long b) {
    if ( a == 0 || b == 0 ) return false;
    long long result = a * b;
    if ( a == result / b ) return false;
    else return true;
  }