| Copyright | (c) Sirui Lu 2024 |
|---|---|
| License | BSD-3-Clause (see the LICENSE file) |
| Maintainer | siruilu@cs.washington.edu |
| Stability | Experimental |
| Portability | GHC only |
| Safe Haskell | None |
| Language | Haskell2010 |
Grisette.Internal.Core.Data.Class.SafeFdiv
Description
Documentation
class (MonadError e m, TryMerge m, Mergeable a) => SafeFdiv e a (m :: Type -> Type) where Source #
Safe fractional division with monadic error handling in multi-path
execution. These procedures throw an exception when the denominator is zero.
The result should be able to handle errors with MonadError.
Minimal complete definition
Methods
safeFdiv :: a -> a -> m a Source #
Safe fractional division with monadic error handling in multi-path execution.
>>>safeFdiv "a" "b" :: ExceptT ArithException Union SymAlgRealExceptT {If (= b 0.0) (Left Ratio has zero denominator) (Right (fdiv a b))}
safeRecip :: a -> m a Source #
Safe fractional reciprocal with monadic error handling in multi-path execution.
>>>safeRecip "a" :: ExceptT ArithException Union SymAlgRealExceptT {If (= a 0.0) (Left Ratio has zero denominator) (Right (recip a))}
default safeRecip :: Fractional a => a -> m a Source #
Instances
| (MonadError ArithException m, TryMerge m) => SafeFdiv ArithException AlgReal m Source # | |
| (MonadError ArithException m, MonadUnion m) => SafeFdiv ArithException SymAlgReal m Source # | |
Defined in Grisette.Internal.Core.Data.Class.SafeFdiv Methods safeFdiv :: SymAlgReal -> SymAlgReal -> m SymAlgReal Source # safeRecip :: SymAlgReal -> m SymAlgReal Source # | |
| SafeFdiv e a m => SafeFdiv e (AsKey a) m Source # | |
Safe fractional with default values returned on exception.
Methods
fdivOr :: a -> a -> a -> a Source #
Safe / with default values returned on exception.
>>>fdivOr "d" "a" "b" :: SymAlgReal(ite (= b 0.0) d (fdiv a b))
recipOr :: a -> a -> a Source #
Safe recip with default values returned on exception.
>>>recipOr "d" "a" :: SymAlgReal(ite (= a 0.0) d (recip a))
Instances
| FdivOr AlgReal Source # | |
| FdivOr SymAlgReal Source # | |
Defined in Grisette.Internal.Core.Data.Class.SafeFdiv Methods fdivOr :: SymAlgReal -> SymAlgReal -> SymAlgReal -> SymAlgReal Source # recipOr :: SymAlgReal -> SymAlgReal -> SymAlgReal Source # | |
| FdivOr a => FdivOr (AsKey a) Source # | |