content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE FlexibleContexts #-}
  {-# LANGUAGE FlexibleInstances #-}
  {-# LANGUAGE KindSignatures #-}
  {-# LANGUAGE MonoLocalBinds #-}
  {-# LANGUAGE MultiParamTypeClasses #-}
  {-# LANGUAGE QuantifiedConstraints #-}
  {-# LANGUAGE RankNTypes #-}
  {-# LANGUAGE UndecidableInstances #-}
  
  -- |
  -- Module      :   Grisette.Internal.Internal.Impl.Unified.FPFPConversion
  -- Copyright   :   (c) Sirui Lu 2024
  -- License     :   BSD-3-Clause (see the LICENSE file)
  --
  -- Maintainer  :   siruilu@cs.washington.edu
  -- Stability   :   Experimental
  -- Portability :   GHC only
  module Grisette.Internal.Internal.Impl.Unified.FPFPConversion () where
  
  import Grisette.Internal.Internal.Decl.Unified.FPFPConversion
    ( AllUnifiedFPFPConversion,
      UnifiedFPFPConversion,
      UnifiedFPFPConversionImpl,
    )
  import Grisette.Internal.Internal.Decl.Unified.UnifiedFP
    ( UnifiedFPImpl (GetFP, GetFPRoundingMode),
    )
  import Grisette.Internal.Internal.Impl.Unified.UnifiedFP ()
  import Grisette.Internal.SymPrim.FP (FP, FPRoundingMode, ValidFP)
  import Grisette.Internal.SymPrim.SymFP (SymFP, SymFPRoundingMode)
  import Grisette.Internal.Unified.EvalModeTag (EvalModeTag (C, S))
  
  instance
    (ValidFP eb0 sb0, ValidFP eb1 sb1) =>
    UnifiedFPFPConversionImpl
      'C
      FP
      eb0
      sb0
      eb1
      sb1
      (FP eb0 sb0)
      (FP eb1 sb1)
      FPRoundingMode
  
  instance
    (ValidFP eb0 sb0, ValidFP eb1 sb1) =>
    UnifiedFPFPConversionImpl
      'S
      SymFP
      eb0
      sb0
      eb1
      sb1
      (SymFP eb0 sb0)
      (SymFP eb1 sb1)
      SymFPRoundingMode
  
  instance
    ( UnifiedFPFPConversionImpl
        (mode :: EvalModeTag)
        (GetFP mode)
        eb0
        sb0
        eb1
        sb1
        (GetFP mode eb0 sb0)
        (GetFP mode eb1 sb1)
        (GetFPRoundingMode mode)
    ) =>
    UnifiedFPFPConversion mode eb0 sb0 eb1 sb1
  
  instance
    ( forall eb0 sb0 eb1 sb1.
      (ValidFP eb0 sb0, ValidFP eb1 sb1) =>
      UnifiedFPFPConversion
        mode
        eb0
        sb0
        eb1
        sb1
    ) =>
    AllUnifiedFPFPConversion mode
  