title: Modulus Two Float Double Numbers
signature: modulusTwoFloatDoubleNumbers :: Double -> Double -> Double
  modulusTwoFloatDoubleNumbers 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 :: Double -> Double -> Bool
  validateSolution actual expected = do
      (abs (actual-expected)) < 1e-09
  
  driver :: Double -> Double -> Double -> 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 (3243.229719038493) (5659.926861939672) (3243.229719038493) )
  
      printf "TEST-1...%s\n" (driver (-4362.665881044217) (-9196.507113304497) (4362.665881044217) )
  
      printf "TEST-2...%s\n" (driver (7255.066257575837) (2623.200060506935) (2008.6661365619666) )
  
      printf "TEST-3...%s\n" (driver (-6929.554320261099) (-3009.0234530313287) (911.5074141984414) )
  
      printf "TEST-4...%s\n" (driver (3569.942027998315) (6920.809419868375) (3569.942027998315) )
  
      printf "TEST-5...%s\n" (driver (-6513.849053096595) (-70.95992406437102) (56.49596323882673) )
  
      printf "TEST-6...%s\n" (driver (7333.183189243961) (580.3500610971768) (368.98245607783906) )
  
      printf "TEST-7...%s\n" (driver (-2856.1752826258803) (-9625.97442825802) (2856.1752826258803) )
  
      printf "TEST-8...%s\n" (driver (9787.228111241662) (2419.6844962423256) (108.4901262723597) )
  
      printf "TEST-9...%s\n" (driver (-1722.873699288031) (-8370.700544254058) (1722.873699288031) )
  
source_py: def modulus_two_float_double_numbers(a, b):
      if (a < 0):
          a = (- a)
      if (b < 0):
          b = (- b)
      mod = a
      while (mod >= b):
          mod = (mod - b)
      if (a < 0):
          return (- mod)
      return mod
source_cpp: double modulus_two_float_double_numbers(double a, double b) {
    double mod;
    if ( a < 0 ) mod = - a;
    else mod = a;
    if ( b < 0 ) b = - b;
    while ( mod >= b ) mod = mod - b;
    if ( a < 0 ) return - mod;
    return mod;
  }