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 SymAlgReal
ExceptT {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 SymAlgReal
ExceptT {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 # |
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 # |