{-# LANGUAGE GADTs #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
#if __GLASGOW_HASKELL__ == 810
{-# OPTIONS_GHC -funfolding-keeness-factor=1 -funfolding-use-threshold=80 #-}
#endif
module Posit.Cl3
(
Cl3(..),
Cl3Posit8,
Cl3Posit16,
Cl3Posit32,
Cl3Posit64,
Cl3Posit128,
Cl3Posit256,
Cl3P8,
Cl3P16,
Cl3P32,
Cl3P64,
Cl3P128,
Cl3P256,
bar, dag,
lsv,
toR, toV3, toBV, toI,
toPV, toH, toC,
toBPV, toODD, toTPV,
toAPS,
showOctave,
reduce, tol,
#ifndef O_NO_STORABLE
Cl3_R, toCl3_R, fromCl3_R,
Cl3_V3, toCl3_V3, fromCl3_V3,
Cl3_BV, toCl3_BV, fromCl3_BV,
Cl3_I, toCl3_I, fromCl3_I,
Cl3_PV, toCl3_PV, fromCl3_PV,
Cl3_H, toCl3_H, fromCl3_H,
Cl3_C, toCl3_C, fromCl3_C,
Cl3_BPV, toCl3_BPV, fromCl3_BPV,
Cl3_ODD, toCl3_ODD, fromCl3_ODD,
Cl3_TPV, toCl3_TPV, fromCl3_TPV,
Cl3_APS, toCl3_APS, fromCl3_APS,
#endif
#ifndef O_NO_RANDOM
randR, rangeR,
randV3, rangeV3,
randBV, rangeBV,
randI, rangeI,
randPV, rangePV,
randH, rangeH,
randC, rangeC,
randBPV, rangeBPV,
randODD, rangeODD,
randTPV, rangeTPV,
randAPS, rangeAPS,
randUnitV3,
randProjector,
randNilpotent,
randUnitary,
#endif
eigvals, hasNilpotent,
spectraldcmp, project,
mIx, timesI,
abssignum,
Convertible(..)
) where
import Text.Read ( Lexeme(..)
, readPrec
, readListPrec
, pfail
, readListPrecDefault
, lexP
, parens
, step)
import Control.DeepSeq (NFData,rnf)
#ifndef O_NO_STORABLE
import Foreign.Storable (Storable, sizeOf, alignment, peek, poke)
import Foreign.Ptr (Ptr, plusPtr, castPtr)
#endif
#ifndef O_NO_RANDOM
import System.Random (RandomGen, Random, randomR, random)
#endif
import Posit hiding (R)
import Posit.Internal.PositC
data Cl3 es where
R :: (PositC es) => !(Posit es) -> Cl3 es
V3 :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
BV :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
I :: (PositC es) => !(Posit es) -> Cl3 es
PV :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
H :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
C :: (PositC es) => !(Posit es) -> !(Posit es) -> Cl3 es
BPV :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
ODD :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
TPV :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
APS :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3 es
type Cl3Posit8 = Cl3 Z_3_2
type Cl3Posit16 = Cl3 I_3_2
type Cl3Posit32 = Cl3 II_3_2
type Cl3Posit64 = Cl3 III_3_2
type Cl3Posit128 = Cl3 IV_3_2
type Cl3Posit256 = Cl3 V_3_2
type Cl3P8 = Cl3 Z_2022
type Cl3P16 = Cl3 I_2022
type Cl3P32 = Cl3 II_2022
type Cl3P64 = Cl3 III_2022
type Cl3P128 = Cl3 IV_2022
type Cl3P256 = Cl3 V_2022
instance PositC es => Show (Cl3 es) where
show :: Cl3 es -> String
show (R Posit es
a0) = String
"R (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (V3 Posit es
a1 Posit es
a2 Posit es
a3) = String
"V3 (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (BV Posit es
a32 Posit es
a31 Posit es
a12) = String
"BV (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a32 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (I Posit es
a123) = String
"I (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = String
"PV (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = String
"H (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (C Posit es
a0 Posit es
a123) = String
"C (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = String
"BPV (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = String
"ODD (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = String
"TPV (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
show (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = String
"APS (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
instance forall es. (Read (Posit es), PositC es) => Read (Cl3 es) where
readListPrec :: ReadPrec [Cl3 es]
readListPrec = ReadPrec [Cl3 es]
forall a. Read a => ReadPrec [a]
readListPrecDefault
readPrec :: ReadPrec (Cl3 es)
readPrec = ReadPrec (Cl3 es) -> ReadPrec (Cl3 es)
forall a. ReadPrec a -> ReadPrec a
parens (ReadPrec (Cl3 es) -> ReadPrec (Cl3 es))
-> ReadPrec (Cl3 es) -> ReadPrec (Cl3 es)
forall a b. (a -> b) -> a -> b
$ do
Lexeme
x <- ReadPrec Lexeme
lexP
case Lexeme
x of
Ident String
"R" -> do Posit es
a0 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
Ident String
"V3" -> do Posit es
a1 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a2 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a3 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3)
Ident String
"BV" -> do Posit es
a32 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a31 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a12 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a32 Posit es
a31 Posit es
a12)
Ident String
"I" -> do Posit es
a123 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
Ident String
"PV" -> do Posit es
a0 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a1 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a2 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a3 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3)
Ident String
"H" -> do Posit es
a0 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a32 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a31 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a12 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
a32 Posit es
a31 Posit es
a12)
Ident String
"C" -> do Posit es
a0 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a123 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
a123)
Ident String
"BPV" -> do Posit es
a1 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a2 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a3 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a32 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a31 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a12 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a32 Posit es
a31 Posit es
a12)
Ident String
"ODD" -> do Posit es
a1 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a2 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a3 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a123 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123)
Ident String
"TPV" -> do Posit es
a32 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a31 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a12 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a123 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a32 Posit es
a31 Posit es
a12 Posit es
a123)
Ident String
"APS" -> do Posit es
a0 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a1 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a2 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a3 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a32 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a31 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a12 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Posit es
a123 <- ReadPrec (Posit es) -> ReadPrec (Posit es)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec (Posit es)
forall a. Read a => ReadPrec a
readPrec
Cl3 es -> ReadPrec (Cl3 es)
forall a. a -> ReadPrec a
forall (m :: * -> *) a. Monad m => a -> m a
return (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a32 Posit es
a31 Posit es
a12 Posit es
a123)
Lexeme
_ -> ReadPrec (Cl3 es)
forall a. ReadPrec a
pfail
instance PositC es => NFData (Cl3 es) where
rnf :: Cl3 es -> ()
rnf !Cl3 es
_ = ()
showOctave :: PositC es => Cl3 es -> String
showOctave :: forall (es :: ES). PositC es => Cl3 es -> String
showOctave (R Posit es
a0) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e0"
showOctave (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e3"
showOctave (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e3"
showOctave (I Posit es
a123) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e0"
showOctave (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e0 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e3"
showOctave (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e0 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e3"
showOctave (C Posit es
a0 Posit es
a123) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e0 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e0"
showOctave (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e3 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++
Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e3"
showOctave (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e3 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e0"
showOctave (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e3 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e0"
showOctave (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> String
forall a. Show a => a -> String
show Posit es
a0 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e0 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"*e3 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++
Posit es -> String
forall a. Show a => a -> String
show Posit es
a23 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e1 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a31 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e2 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a12 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e3 + " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Posit es -> String
forall a. Show a => a -> String
show Posit es
a123 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"i*e0"
instance PositC es => Eq (Cl3 es) where
(R Posit es
a0) == :: Cl3 es -> Cl3 es -> Bool
== (R Posit es
b0) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0
(R Posit es
a0) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (I Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (C Posit es
b0 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(R Posit es
a0) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (R Posit es
b0) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (R Posit es
b0) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (R Posit es
b0) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (R Posit es
b0) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (R Posit es
b0) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (R Posit es
b0) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (R Posit es
b0) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (R Posit es
b0) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (R Posit es
b0) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (R Posit es
b0) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (I Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (C Posit es
b0 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (I Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (C Posit es
b0 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
(C Posit es
a0 Posit es
a123) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (I Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
(I Posit es
a123) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (C Posit es
b0 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(I Posit es
a123) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (I Posit es
b123) = Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (I Posit es
b123) = Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (I Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (I Posit es
b123) = Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (I Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (I Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (I Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (C Posit es
b0 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (C Posit es
b0 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (C Posit es
b0 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
(C Posit es
a0 Posit es
a123) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(C Posit es
a0 Posit es
a123) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (C Posit es
b0 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (C Posit es
b0 Posit es
b123) = Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (C Posit es
b0 Posit es
b123) = Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (C Posit es
b0 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12
Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31
Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123 Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
Bool -> Bool -> Bool
&& Posit es
b0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
b3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23 Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
Bool -> Bool -> Bool
&& Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) == (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b0 Bool -> Bool -> Bool
&& Posit es
a1 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b1 Bool -> Bool -> Bool
&& Posit es
a2 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b2 Bool -> Bool -> Bool
&& Posit es
a3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b3 Bool -> Bool -> Bool
&& Posit es
a23 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b23
Bool -> Bool -> Bool
&& Posit es
a31 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b31 Bool -> Bool -> Bool
&& Posit es
a12 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b12 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
b123
instance PositF es => Ord (Cl3 es) where
compare :: Cl3 es -> Cl3 es -> Ordering
compare (R Posit es
a0) (R Posit es
b0) = Posit es -> Posit es -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Posit es
a0 Posit es
b0
compare (I Posit es
a123) (I Posit es
b123) = Posit es -> Posit es -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Posit es
a123 Posit es
b123
compare Cl3 es
cliffor1 Cl3 es
cliffor2 =
let R Posit es
a0 = Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
cliffor1
R Posit es
b0 = Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
cliffor2
R Posit es
a0' = Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
lsv Cl3 es
cliffor1
R Posit es
b0' = Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
lsv Cl3 es
cliffor2
in case Posit es -> Posit es -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Posit es
a0 Posit es
b0 of
Ordering
LT -> Ordering
LT
Ordering
GT -> Ordering
GT
Ordering
EQ -> Posit es -> Posit es -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Posit es
a0' Posit es
b0'
instance PositF es => Num (Cl3 es) where
(R Posit es
a0) + :: Cl3 es -> Cl3 es -> Cl3 es
+ (R Posit es
b0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0)
(R Posit es
a0) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3
(R Posit es
a0) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
b23 Posit es
b31 Posit es
b12
(R Posit es
a0) + (I Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
b123
(R Posit es
a0) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3
(R Posit es
a0) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b23 Posit es
b31 Posit es
b12
(R Posit es
a0) + (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b123
(R Posit es
a0) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
0
(R Posit es
a0) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
0 Posit es
0 Posit es
0 Posit es
b123
(R Posit es
a0) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(R Posit es
a0) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
b0 Posit es
a23 Posit es
a31 Posit es
a12
(I Posit es
a123) + (R Posit es
b0) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
b0 Posit es
a123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a23 Posit es
a31 Posit es
a12
(C Posit es
a0 Posit es
a123) + (R Posit es
b0) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
b123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(V3 Posit es
a1 Posit es
a2 Posit es
a3) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12
(I Posit es
a123) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
(C Posit es
a0 Posit es
a123) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
b0 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(BV Posit es
a23 Posit es
a31 Posit es
a12) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(I Posit es
a123) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(C Posit es
a0 Posit es
a123) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(I Posit es
a123) + (I Posit es
b123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(I Posit es
a123) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
(I Posit es
a123) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
0 Posit es
0 Posit es
0 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(I Posit es
a123) + (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
b0 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(I Posit es
a123) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(I Posit es
a123) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(I Posit es
a123) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(I Posit es
a123) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
b123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(C Posit es
a0 Posit es
a123) + (I Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
b123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12 Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
0 Posit es
0 Posit es
0 Posit es
b123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
(C Posit es
a0 Posit es
a123) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
0 Posit es
0 Posit es
0 Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(C Posit es
a0 Posit es
a123) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
0 Posit es
0 Posit es
0 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
0
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
0 Posit es
0 Posit es
0 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(C Posit es
a0 Posit es
a123) + (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(C Posit es
a0 Posit es
a123) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(C Posit es
a0 Posit es
a123) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
0 Posit es
0 Posit es
0 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(C Posit es
a0 Posit es
a123) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(C Posit es
a0 Posit es
a123) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0) Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12 Posit es
b123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
b123
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12 Posit es
a123
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) Posit es
a123
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
b23 Posit es
b31 Posit es
b12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3) Posit es
a23 Posit es
a31 Posit es
a12 (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 (Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12) (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) + (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b0)
(Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b1) (Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2) (Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3)
(Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b23) (Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b31) (Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b12)
(Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123)
(R Posit es
a0) * :: Cl3 es -> Cl3 es -> Cl3 es
* (R Posit es
b0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(R Posit es
a0) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(R Posit es
a0) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(R Posit es
a0) * (I Posit es
b123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(R Posit es
a0) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(R Posit es
a0) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(R Posit es
a0) * (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(R Posit es
a0) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(R Posit es
a0) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(R Posit es
a0) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(R Posit es
a0) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(I Posit es
a123) * (R Posit es
b0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(C Posit es
a0 Posit es
a123) * (R Posit es
b0) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (R Posit es
b0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (R Posit es
b0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
Posit es
0
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(V3 Posit es
a1 Posit es
a2 Posit es
a3) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(I Posit es
a123) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
Posit es
0
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(C Posit es
a0 Posit es
a123) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (V3 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
Posit es
0
(BV Posit es
a23 Posit es
a31 Posit es
a12) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(I Posit es
a123) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(C Posit es
a0 Posit es
a123) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
Posit es
0
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (BV Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(I Posit es
a123) * (I Posit es
b123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(I Posit es
a123) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(I Posit es
a123) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(I Posit es
a123) * (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(I Posit es
a123) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(I Posit es
a123) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(I Posit es
a123) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(I Posit es
a123) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(C Posit es
a0 Posit es
a123) * (I Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (I Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (I Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
Posit es
0
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(C Posit es
a0 Posit es
a123) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (PV Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(C Posit es
a0 Posit es
a123) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (H Posit es
b0 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(C Posit es
a0 Posit es
a123) * (C Posit es
b0 Posit es
b123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(C Posit es
a0 Posit es
a123) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(C Posit es
a0 Posit es
a123) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(C Posit es
a0 Posit es
a123) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(C Posit es
a0 Posit es
a123) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (C Posit es
b0 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (BPV Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2) (Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (ODD Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12) (Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23) (Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
Posit es
0
(TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (TPV Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) * (APS Posit es
b0 Posit es
b1 Posit es
b2 Posit es
b3 Posit es
b23 Posit es
b31 Posit es
b12 Posit es
b123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23)
(Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
b3)
abs :: Cl3 es -> Cl3 es
abs Cl3 es
cl3 = (Cl3 es, Cl3 es) -> Cl3 es
forall a b. (a, b) -> a
fst ((Cl3 es, Cl3 es) -> Cl3 es) -> (Cl3 es, Cl3 es) -> Cl3 es
forall a b. (a -> b) -> a -> b
$ Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositF es => Cl3 es -> (Cl3 es, Cl3 es)
abssignum Cl3 es
cl3
signum :: Cl3 es -> Cl3 es
signum Cl3 es
cl3 = (Cl3 es, Cl3 es) -> Cl3 es
forall a b. (a, b) -> b
snd ((Cl3 es, Cl3 es) -> Cl3 es) -> (Cl3 es, Cl3 es) -> Cl3 es
forall a b. (a -> b) -> a -> b
$ Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositF es => Cl3 es -> (Cl3 es, Cl3 es)
abssignum Cl3 es
cl3
fromInteger :: Integer -> Cl3 es
fromInteger Integer
int = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Integer -> Posit es
forall a. Num a => Integer -> a
fromInteger Integer
int)
negate :: Cl3 es -> Cl3 es
negate (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
negate (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
negate (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
negate (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
negate (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
negate (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
negate (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
negate (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
negate (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
negate (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
negate (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
(Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
reimMag :: PositF es => Posit es -> Posit es -> Posit es -> Posit es -> Posit es
reimMag :: forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
reimMag Posit es
v0 Posit es
v1 Posit es
v2 Posit es
v3 =
let sumsqs :: Posit es
sumsqs = Posit es
v1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
v2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
v3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
v0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
sumsqs
in Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
v0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
sumsqs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
x)
instance PositF es => Fractional (Cl3 es) where
recip :: Cl3 es -> Cl3 es
recip (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
a0)
recip Cl3 es
cliff =
let R Posit es
mag = Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
cliff
recipsqmag :: Posit es
recipsqmag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
magPosit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
negrecipsqmag :: Posit es
negrecipsqmag = Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
recipsqmag
recipmag2 :: Cl3 es
recipmag2 = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall a b. (a -> b) -> a -> b
$ Cl3 es
cliff Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
cliff
go_recip :: Cl3 es -> Cl3 es
go_recip (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3)
go_recip (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12)
go_recip (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123)
go_recip (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12)
go_recip (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123)
go_recip (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
recipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
negrecipsqmag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123)
go_recip pv :: Cl3 es
pv@PV{} = Cl3 es
recipmag2 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
pv
go_recip tpv :: Cl3 es
tpv@TPV{} = Cl3 es
recipmag2 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
tpv
go_recip Cl3 es
cliffor = Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
reduce (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall a b. (a -> b) -> a -> b
$ (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
recip' Cl3 es
cliffor
in Cl3 es -> Cl3 es
go_recip Cl3 es
cliff
fromRational :: Rational -> Cl3 es
fromRational Rational
rat = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Rational -> Posit es
forall a. Fractional a => Rational -> a
fromRational Rational
rat)
instance PositF es => Floating (Cl3 es) where
pi :: Cl3 es
pi = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
forall a. Floating a => a
pi
exp :: Cl3 es -> Cl3 es
exp (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
exp Posit es
a0)
exp (I Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123) (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123)
exp (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let expa0 :: Posit es
expa0 = Posit es -> Posit es
forall a. Floating a => a -> a
exp Posit es
a0
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
expa0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123) (Posit es
expa0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123)
exp Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
exp' Cl3 es
cliffor
log :: Cl3 es -> Cl3 es
log (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
log Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
forall a. Floating a => a
pi
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0) Posit es
forall a. Floating a => a
pi
log (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
forall (es :: ES). PositC es => Posit es
NaR
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
1 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123) (Posit es -> Posit es
forall a. Num a => a -> a
signum Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2))
log (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
&& Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
forall (es :: ES). PositC es => Posit es
NaR
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
log (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
log (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2) (Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 Posit es
a0)
log Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
log Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
log' Cl3 es
cliffor
sqrt :: Cl3 es -> Cl3 es
sqrt (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
a0)
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0)
sqrt (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise =
let sqrtr :: Posit es
sqrtr = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a123
phiby2 :: Posit es
phiby2 = Posit es -> Posit es
forall a. Num a => a -> a
signum Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
4)
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
sqrtr Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
phiby2) (Posit es
sqrtr Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
phiby2)
sqrt (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let sqrtr :: Posit es
sqrtr = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
phiby2 :: Posit es
phiby2 = Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
sqrtr Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
phiby2) (Posit es
sqrtr Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
phiby2)
sqrt Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sqrt' Cl3 es
cliffor
sin :: Cl3 es -> Cl3 es
sin (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a0)
sin (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a123)
sin (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sin (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sin (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a123) (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a123)
sin Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sin Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sin' Cl3 es
cliffor
cos :: Cl3 es -> Cl3 es
cos (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a0)
cos (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0)
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a123)
cos (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a123) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a123)
cos Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
cos' Cl3 es
cliffor
tan :: Cl3 es -> Cl3 es
tan (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
tan Posit es
a0)
tan (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
tanh Posit es
a123)
tan (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tan (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tan (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let
m :: Posit es
m = Posit es
x2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
y2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x1 :: Posit es
x1 = Posit es
sinxPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
coshy
y1 :: Posit es
y1 = Posit es
cosxPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
sinhy
x2 :: Posit es
x2 = Posit es
cosxPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
coshy
y2 :: Posit es
y2 = Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
sinxPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
sinhy
sinx :: Posit es
sinx = Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a0
cosx :: Posit es
cosx = Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a0
sinhy :: Posit es
sinhy = Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a123
coshy :: Posit es
coshy = Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a123
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es
x1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
x2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
y1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y2)Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
m) ((Posit es
x2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
x1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y2)Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
m)
tan Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tan Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
tan' Cl3 es
cliffor
asin :: Cl3 es -> Cl3 es
asin (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
1 = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (Posit es -> Posit es
forall a. Num a => a -> a
negate(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1)))
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
asin Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (Posit es -> Posit es
forall a. Num a => a -> a
negate(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1)))
asin (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
asinh Posit es
a123)
asin (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asin (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asin (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let theta :: Posit es
theta = Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 (-Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123) (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
rho :: Posit es
rho = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (-Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
b0 :: Posit es
b0 = Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123
b123 :: Posit es
b123 = Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a0
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
b123 Posit es
b0) (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
b0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ (-Posit es
2))
asin Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asin Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
asin' Cl3 es
cliffor
acos :: Cl3 es -> Cl3 es
acos (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
1 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1)))
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
acos Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
forall a. Floating a => a
pi (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1)))
acos (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es
forall a. Floating a => a -> a
asinh Posit es
a123)
acos (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acos (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acos (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let theta :: Posit es
theta = Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 (-Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123) (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
rho :: Posit es
rho = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (-Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
b0 :: Posit es
b0 = Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123
b123 :: Posit es
b123 = Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a0
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
b123 Posit es
b0) (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
b0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2)
acos Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acos Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
acos' Cl3 es
cliffor
atan :: Cl3 es -> Cl3 es
atan (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
atan Posit es
a0)
atan (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
1 = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (Posit es
0.5Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*(Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1)))
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
atanh Posit es
a123)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (((Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123)) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
atan (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atan (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atan (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a0 (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a0 (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
((Posit es -> Posit es
forall a. Floating a => a -> a
log ((Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log ((Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
4)
atan Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atan Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
atan' Cl3 es
cliffor
sinh :: Cl3 es -> Cl3 es
sinh (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a0)
sinh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123)
sinh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sinh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sinh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a0) (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a0)
sinh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sinh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sinh' Cl3 es
cliffor
cosh :: Cl3 es -> Cl3 es
cosh (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a0)
cosh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
1
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123)
cosh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cosh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cosh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a0) (Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a0)
cosh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cosh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
cosh' Cl3 es
cliffor
tanh :: Cl3 es -> Cl3 es
tanh (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
tanh Posit es
a0)
tanh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
tan Posit es
a123)
tanh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tanh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tanh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let
m :: Posit es
m = Posit es
x2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
y2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x1 :: Posit es
x1 = Posit es
cosyPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
sinhx
y1 :: Posit es
y1 = Posit es
sinyPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
coshx
x2 :: Posit es
x2 = Posit es
cosyPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
coshx
y2 :: Posit es
y2 = Posit es
sinyPosit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
sinhx
siny :: Posit es
siny = Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
a123
cosy :: Posit es
cosy = Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
a123
sinhx :: Posit es
sinhx = Posit es -> Posit es
forall a. Floating a => a -> a
sinh Posit es
a0
coshx :: Posit es
coshx = Posit es -> Posit es
forall a. Floating a => a -> a
cosh Posit es
a0
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es
x1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
x2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
y1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y2)Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
m) ((Posit es
x2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
x1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
y2)Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
m)
tanh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
tanh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
tanh' Cl3 es
cliffor
asinh :: Cl3 es -> Cl3 es
asinh (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
asinh Posit es
a0)
asinh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
1 = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1))) (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
asin Posit es
a123)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
1))) (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
asinh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asinh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asinh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let theta :: Posit es
theta = Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 (Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123) (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
1)
rho :: Posit es
rho = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
1)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a123)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
b0 :: Posit es
b0 = Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
b123 :: Posit es
b123 = Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin (Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
b0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2) (Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
b123 Posit es
b0)
asinh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
asinh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
asinh' Cl3 es
cliffor
acosh :: Cl3 es -> Cl3 es
acosh (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= Posit es
1 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
acosh Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 (Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
acosh(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0) Posit es
forall a. Floating a => a
pi
acosh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
0 = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2))) (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
abs (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2))) (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
acosh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acosh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acosh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise =
let theta :: Posit es
theta = Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
1) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
1)
rho :: Posit es
rho = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ ((Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
1)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* ((Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
1)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
b0 :: Posit es
b0 = Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos(Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
b123 :: Posit es
b123 = Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
rho Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin(Posit es
thetaPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
in Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
b0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2) (Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
b123 Posit es
b0)
acosh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
acosh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
acosh' Cl3 es
cliffor
atanh :: Cl3 es -> Cl3 es
atanh (R Posit es
a0)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
> Posit es
1 = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
a0) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
1))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (-Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= (-Posit es
1) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
atanh Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (((Posit es -> Posit es
forall a. Floating a => a -> a
log(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
a0) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log (Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
a0))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2) (Posit es
forall a. Floating a => a
piPosit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
atanh (I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Floating a => a -> a
atan Posit es
a123)
atanh (C Posit es
a0 Posit es
a123)
| Posit es
a0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atanh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123)
| Posit es
a123 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atanh (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0)
| Bool
otherwise = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C ((Posit es -> Posit es
forall a. Floating a => a -> a
log ((Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
a0)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es -> Posit es
forall a. Floating a => a -> a
log ((Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
a0)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
4) ((Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 (Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
a0) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es -> Posit es -> Posit es
forall a. RealFloat a => a -> a -> a
atan2 Posit es
a123 (Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+Posit es
a0))Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)
atanh Cl3 es
cliffor = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
forall a. Floating a => a -> a
atanh Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
atanh' Cl3 es
cliffor
lsv :: PositF es => Cl3 es -> Cl3 es
lsv :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
lsv (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a0)
lsv (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a1 Posit es
a2 Posit es
a3)
lsv (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a23 Posit es
a31 Posit es
a12)
lsv (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a123)
lsv (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
loDisc Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3)
lsv (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
loDisc Posit es
a123 Posit es
a23 Posit es
a31 Posit es
a12)
lsv (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p -> p
hypot4 Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12)
lsv (C Posit es
a0 Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p
hypot2 Posit es
a0 Posit es
a123)
lsv (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) =
let x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)
y :: Posit es
y = Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
x
in if Posit es
y Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
<= Posit es
forall (es :: ES). PositF es => Posit es
tol'
then Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
else Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
y)
lsv (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p -> p
hypot4 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123)
lsv (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) =
let x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
negate(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+
(Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
y :: Posit es
y = Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
x
in if Posit es
y Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
<= Posit es
forall (es :: ES). PositF es => Posit es
tol'
then Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
else Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
y)
loDisc :: PositF es => Posit es -> Posit es -> Posit es -> Posit es -> Posit es
loDisc :: forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
loDisc Posit es
v0 Posit es
v1 Posit es
v2 Posit es
v3 =
let sumsqs :: Posit es
sumsqs = Posit es
v1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
v2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
v3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
negate (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
v0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
sumsqs
y :: Posit es
y = Posit es
v0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
sumsqs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x
in if Posit es
y Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
<= Posit es
forall (es :: ES). PositF es => Posit es
tol'
then Posit es
0
else Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
y
spectraldcmp :: PositF es => (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp :: forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmp Cl3 es -> Cl3 es
fun Cl3 es -> Cl3 es
fun' (Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
reduce -> Cl3 es
cliffor) = Cl3 es -> Cl3 es
dcmp Cl3 es
cliffor
where
dcmp :: Cl3 es -> Cl3 es
dcmp r :: Cl3 es
r@R{} = Cl3 es -> Cl3 es
fun Cl3 es
r
dcmp i :: Cl3 es
i@I{} = Cl3 es -> Cl3 es
fun Cl3 es
i
dcmp c :: Cl3 es
c@C{} = Cl3 es -> Cl3 es
fun Cl3 es
c
dcmp v :: Cl3 es
v@V3{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es -> Cl3 es
fun Cl3 es
v
dcmp pv :: Cl3 es
pv@PV{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es -> Cl3 es
fun Cl3 es
pv
dcmp bv :: Cl3 es
bv@BV{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es -> Cl3 es
fun Cl3 es
bv
dcmp tpv :: Cl3 es
tpv@TPV{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es -> Cl3 es
fun Cl3 es
tpv
dcmp h :: Cl3 es
h@H{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es -> Cl3 es
fun Cl3 es
h
dcmp od :: Cl3 es
od@ODD{} = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es -> Cl3 es
fun Cl3 es
od
dcmp Cl3 es
cliff
| Cl3 es -> Bool
forall (es :: ES). PositF es => Cl3 es -> Bool
hasNilpotent Cl3 es
cliff = (Cl3 es -> Cl3 es)
-> (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es)
-> (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
jordan Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es -> Cl3 es
fun Cl3 es -> Cl3 es
fun' Cl3 es
cliff
| Cl3 es -> Bool
forall (es :: ES). PositF es => Cl3 es -> Bool
isColinear Cl3 es
cliff = (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es -> Cl3 es
fun Cl3 es
cliff
| Bool
otherwise =
let BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV Cl3 es
cliff
boost :: Cl3 es
boost = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
boost2colinear Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
in Cl3 es
boost Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es -> Cl3 es
fun (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
boost Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
cliff Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
boost) Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
boost
jordan :: PositF es => (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
jordan :: forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es)
-> (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
jordan Cl3 es -> Cl3 es
toSpecial Cl3 es -> Cl3 es
fun Cl3 es -> Cl3 es
fun' Cl3 es
cliffor =
let eigs :: Cl3 es
eigs = Cl3 es -> Cl3 es
toSpecial Cl3 es
cliffor
in Cl3 es -> Cl3 es
fun Cl3 es
eigs Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
+ Cl3 es -> Cl3 es
fun' Cl3 es
eigs Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV Cl3 es
cliffor
spectraldcmpSpecial :: PositF es => (Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial :: forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
spectraldcmpSpecial Cl3 es -> Cl3 es
toSpecial Cl3 es -> Cl3 es
function Cl3 es
cliffor =
let (Cl3 es
p,Cl3 es
p_bar,Cl3 es
eig1,Cl3 es
eig2) = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es, Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es, Cl3 es, Cl3 es)
projEigs Cl3 es -> Cl3 es
toSpecial Cl3 es
cliffor
in Cl3 es -> Cl3 es
function Cl3 es
eig1 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
p Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
+ Cl3 es -> Cl3 es
function Cl3 es
eig2 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
p_bar
eigvals :: PositF es => Cl3 es -> (Cl3 es,Cl3 es)
eigvals :: forall (es :: ES). PositF es => Cl3 es -> (Cl3 es, Cl3 es)
eigvals (Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
reduce -> Cl3 es
cliffor) = Cl3 es -> (Cl3 es, Cl3 es)
forall {es :: ES}.
(PositC es, PositC (Next es), PositC (Prev es)) =>
Cl3 es -> (Cl3 es, Cl3 es)
eigv Cl3 es
cliffor
where
eigv :: Cl3 es -> (Cl3 es, Cl3 es)
eigv r :: Cl3 es
r@R{} = Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositC es => Cl3 es -> (Cl3 es, Cl3 es)
dup Cl3 es
r
eigv i :: Cl3 es
i@I{} = Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositC es => Cl3 es -> (Cl3 es, Cl3 es)
dup Cl3 es
i
eigv c :: Cl3 es
c@C{} = Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositC es => Cl3 es -> (Cl3 es, Cl3 es)
dup Cl3 es
c
eigv v :: Cl3 es
v@V3{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
v
eigv pv :: Cl3 es
pv@PV{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
pv
eigv bv :: Cl3 es
bv@BV{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
bv
eigv tpv :: Cl3 es
tpv@TPV{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
tpv
eigv h :: Cl3 es
h@H{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es
h
eigv od :: Cl3 es
od@ODD{} = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es
od
eigv Cl3 es
cliff
| Cl3 es -> Bool
forall (es :: ES). PositF es => Cl3 es -> Bool
hasNilpotent Cl3 es
cliff = Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES). PositC es => Cl3 es -> (Cl3 es, Cl3 es)
dup(Cl3 es -> (Cl3 es, Cl3 es))
-> (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
reduce(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC (Cl3 es -> (Cl3 es, Cl3 es)) -> Cl3 es -> (Cl3 es, Cl3 es)
forall a b. (a -> b) -> a -> b
$ Cl3 es
cliff
| Cl3 es -> Bool
forall (es :: ES). PositF es => Cl3 es -> Bool
isColinear Cl3 es
cliff = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es
cliff
| Bool
otherwise =
let BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV Cl3 es
cliff
boost :: Cl3 es
boost = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
boost2colinear Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
in (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
boost Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
cliff Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
boost)
dup :: PositC es => Cl3 es -> (Cl3 es,Cl3 es)
dup :: forall (es :: ES). PositC es => Cl3 es -> (Cl3 es, Cl3 es)
dup Cl3 es
cliff = (Cl3 es
cliff, Cl3 es
cliff)
eigvalsSpecial :: PositF es => (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es,Cl3 es)
eigvalsSpecial :: forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es)
eigvalsSpecial Cl3 es -> Cl3 es
toSpecial Cl3 es
cliffor =
let (Cl3 es
_,Cl3 es
_,Cl3 es
eig1,Cl3 es
eig2) = (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es, Cl3 es, Cl3 es)
forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es, Cl3 es, Cl3 es)
projEigs Cl3 es -> Cl3 es
toSpecial Cl3 es
cliffor
in (Cl3 es
eig1,Cl3 es
eig2)
project :: PositF es => Cl3 es -> Cl3 es
project :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
project R{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 Posit es
0 Posit es
0 Posit es
0.5
project I{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 Posit es
0 Posit es
0 Posit es
0.5
project C{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 Posit es
0 Posit es
0 Posit es
0.5
project (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a1 Posit es
a2 Posit es
a3
project (PV Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a1 Posit es
a2 Posit es
a3
project (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a1 Posit es
a2 Posit es
a3
project (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a23 Posit es
a31 Posit es
a12
project (H Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a23 Posit es
a31 Posit es
a12
project (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
a23 Posit es
a31 Posit es
a12
project (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
biTriDProj Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
project (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
biTriDProj Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
biTriDProj :: PositF es => Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
biTriDProj :: forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
biTriDProj Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 =
let v3Mag :: Posit es
v3Mag = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
v3MagltTol :: Bool
v3MagltTol = Posit es
v3Mag Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
< Posit es
forall (es :: ES). PositF es => Posit es
tol'
halfInvV3Mag :: Posit es
halfInvV3Mag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
v3Mag Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2
bvMag :: Posit es
bvMag = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
bvMagltTol :: Bool
bvMagltTol = Posit es
bvMag Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
< Posit es
forall (es :: ES). PositF es => Posit es
tol'
halfInvBVMag :: Posit es
halfInvBVMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
bvMag Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
2
dotPos :: Bool
dotPos = (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12) Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
>= Posit es
0
b1 :: Posit es
b1 = Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23
b2 :: Posit es
b2 = Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31
b3 :: Posit es
b3 = Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12
bHalfInvMag :: Posit es
bHalfInvMag = (Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
b1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
c1 :: Posit es
c1 = Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a23
c2 :: Posit es
c2 = Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a31
c3 :: Posit es
c3 = Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a12
cHalfInvMag :: Posit es
cHalfInvMag = (Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
2)(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
c1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
c2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
c3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
in if | Bool
v3MagltTol Bool -> Bool -> Bool
&& Bool
bvMagltTol -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 Posit es
0 Posit es
0 Posit es
0.5
| Bool
bvMagltTol -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
halfInvV3Mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
halfInvV3Mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
halfInvV3Mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3)
| Bool
v3MagltTol -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
halfInvBVMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
halfInvBVMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
halfInvBVMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12)
| Bool
dotPos -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
bHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b1) (Posit es
bHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b2) (Posit es
bHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b3)
| Bool
otherwise -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
cHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
c1) (Posit es
cHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
c2) (Posit es
cHalfInvMag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
c3)
triDProj :: PositF es => Posit es -> Posit es -> Posit es -> Cl3 es
triDProj :: forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Cl3 es
triDProj Posit es
v1 Posit es
v2 Posit es
v3 =
let mag :: Posit es
mag = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
v1 Posit es
v2 Posit es
v3
in if Posit es
mag Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
then Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 Posit es
0 Posit es
0 Posit es
0.5
else Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
v1 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag)) (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
v2 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag)) (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
v3 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag))
boost2colinear :: PositF es => Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
boost2colinear :: forall (es :: ES).
PositF es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
boost2colinear Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 =
let scale :: Posit es
scale = Posit es -> Posit es
forall a. Fractional a => a -> a
recip (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
b1 :: Posit es
b1 = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)
b2 :: Posit es
b2 = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)
b3 :: Posit es
b3 = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)
eig1 :: Posit es
eig1 = (Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*)(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
b1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
b3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
eig2 :: Posit es
eig2 = Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
eig1
transEig1 :: Posit es
transEig1 = Posit es -> Posit es
forall a. Floating a => a -> a
exp(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
4)(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
atanh (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
eig1
transEig2 :: Posit es
transEig2 = Posit es -> Posit es
forall a. Floating a => a -> a
exp(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/Posit es
4)(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
atanh (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
eig2
sumTransEigs :: Posit es
sumTransEigs = (Posit es
transEig1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
transEig2) Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
eig1
in Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* (Posit es
transEig1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
transEig2)) (Posit es
sumTransEigs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b1) (Posit es
sumTransEigs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b2) (Posit es
sumTransEigs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
b3)
isColinear :: PositF es => Cl3 es -> Bool
isColinear :: forall (es :: ES). PositF es => Cl3 es -> Bool
isColinear R{} = Bool
True
isColinear V3{} = Bool
True
isColinear BV{} = Bool
True
isColinear I{} = Bool
True
isColinear PV{} = Bool
True
isColinear H{} = Bool
True
isColinear C{} = Bool
True
isColinear ODD{} = Bool
True
isColinear TPV{} = Bool
True
isColinear (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
colinearHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
isColinear (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
colinearHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
colinearHelper :: PositF es => Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
colinearHelper :: forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
colinearHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 =
let magV3 :: Posit es
magV3 = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a1 Posit es
a2 Posit es
a3
invMagV3 :: Posit es
invMagV3 = Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
magV3
magBV :: Posit es
magBV = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a23 Posit es
a31 Posit es
a12
invMagBV :: Posit es
invMagBV = Posit es -> Posit es
forall a. Fractional a => a -> a
recip Posit es
magBV
crss :: Posit es
crss = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12) (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31))
(Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12))
(Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
invMagV3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
invMagBV Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23))
in Posit es
magV3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
||
Posit es
magBV Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0 Bool -> Bool -> Bool
||
Posit es
crss Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
<= Posit es
forall (es :: ES). PositF es => Posit es
tol'
hasNilpotent :: PositF es => Cl3 es -> Bool
hasNilpotent :: forall (es :: ES). PositF es => Cl3 es -> Bool
hasNilpotent R{} = Bool
False
hasNilpotent V3{} = Bool
False
hasNilpotent BV{} = Bool
False
hasNilpotent I{} = Bool
False
hasNilpotent PV{} = Bool
False
hasNilpotent H{} = Bool
False
hasNilpotent C{} = Bool
False
hasNilpotent ODD{} = Bool
False
hasNilpotent TPV{} = Bool
False
hasNilpotent (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
nilpotentHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
hasNilpotent (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
nilpotentHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
nilpotentHelper :: (PositF es) => Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
nilpotentHelper :: forall (es :: ES).
PositF es =>
Posit es
-> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Bool
nilpotentHelper Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 =
let magV3 :: Posit es
magV3 = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a1 Posit es
a2 Posit es
a3
magBV :: Posit es
magBV = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
a23 Posit es
a31 Posit es
a12
v3DotBV :: Posit es
v3DotBV = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a -> a -> a
fdot3 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
in Posit es
magV3 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
/= Posit es
0 Bool -> Bool -> Bool
&&
Posit es
magBV Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
/= Posit es
0 Bool -> Bool -> Bool
&&
Posit es
magV3 Posit es -> Posit es -> Bool
forall p. AltFloating p => p -> p -> Bool
`approxEq` Posit es
magBV Bool -> Bool -> Bool
&&
Posit es
v3DotBV Posit es -> Posit es -> Bool
forall a. Ord a => a -> a -> Bool
<= Posit es
forall (es :: ES). PositF es => Posit es
tol'
projEigs :: PositF es => (Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es,Cl3 es,Cl3 es,Cl3 es)
projEigs :: forall (es :: ES).
PositF es =>
(Cl3 es -> Cl3 es) -> Cl3 es -> (Cl3 es, Cl3 es, Cl3 es, Cl3 es)
projEigs Cl3 es -> Cl3 es
toSpecial Cl3 es
cliffor =
let p :: Cl3 es
p = Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
project Cl3 es
cliffor
p_bar :: Cl3 es
p_bar = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar Cl3 es
p
eig1 :: Cl3 es
eig1 = Cl3 es
2 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
toSpecial (Cl3 es
p Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
cliffor Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
p)
eig2 :: Cl3 es
eig2 = Cl3 es
2 Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
toSpecial (Cl3 es
p_bar Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
cliffor Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es
p_bar)
in (Cl3 es
p,Cl3 es
p_bar,Cl3 es
eig1,Cl3 es
eig2)
reduce :: PositF es => Cl3 es -> Cl3 es
reduce :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
reduce Cl3 es
cliff
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
cliff Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
| Bool
otherwise = Cl3 es -> Cl3 es
forall {es :: ES}.
(PositC es, PositC (Next es), PositC (Prev es)) =>
Cl3 es -> Cl3 es
go_reduce Cl3 es
cliff
where
go_reduce :: Cl3 es -> Cl3 es
go_reduce r :: Cl3 es
r@R{} = Cl3 es
r
go_reduce v :: Cl3 es
v@V3{} = Cl3 es
v
go_reduce bv :: Cl3 es
bv@BV{} = Cl3 es
bv
go_reduce i :: Cl3 es
i@I{} = Cl3 es
i
go_reduce pv :: Cl3 es
pv@PV{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
pv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
pv
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
pv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
pv
| Bool
otherwise = Cl3 es
pv
go_reduce h :: Cl3 es
h@H{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
h) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
h
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
h) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
h
| Bool
otherwise = Cl3 es
h
go_reduce c :: Cl3 es
c@C{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
c) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
c
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR Cl3 es
c) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
c
| Bool
otherwise = Cl3 es
c
go_reduce bpv :: Cl3 es
bpv@BPV{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
bpv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
bpv
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
bpv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
bpv
| Bool
otherwise = Cl3 es
bpv
go_reduce od :: Cl3 es
od@ODD{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
od) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
od
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 Cl3 es
od) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
od
| Bool
otherwise = Cl3 es
od
go_reduce tpv :: Cl3 es
tpv@TPV{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
tpv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
tpv
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI Cl3 es
tpv) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV Cl3 es
tpv
| Bool
otherwise = Cl3 es
tpv
go_reduce aps :: Cl3 es
aps@APS{}
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es
aps)
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toODD Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toH Cl3 es
aps)
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toTPV Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toPV Cl3 es
aps)
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV Cl3 es
aps)
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toH Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toODD Cl3 es
aps)
| Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toPV Cl3 es
aps) Cl3 es -> Cl3 es -> Bool
forall a. Ord a => a -> a -> Bool
<= Cl3 es
forall (es :: ES). PositF es => Cl3 es
tol = Cl3 es -> Cl3 es
go_reduce (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toTPV Cl3 es
aps)
| Bool
otherwise = Cl3 es
aps
mIx :: PositC es => Cl3 es -> Cl3 es
mIx :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
mIx (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
mIx (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
mIx (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a23 Posit es
a31 Posit es
a12
mIx (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a123
mIx (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
mIx (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a23 Posit es
a31 Posit es
a12 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
mIx (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a123 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
mIx (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a23 Posit es
a31 Posit es
a12 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
mIx (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a123 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
mIx (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a123 Posit es
a23 Posit es
a31 Posit es
a12
mIx (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a123 Posit es
a23 Posit es
a31 Posit es
a12 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a0)
timesI :: PositC es => Cl3 es -> Cl3 es
timesI :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
timesI (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a0
timesI (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a1 Posit es
a2 Posit es
a3
timesI (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
timesI (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
timesI (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a0
timesI (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) Posit es
a0
timesI (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123) Posit es
a0
timesI (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) Posit es
a1 Posit es
a2 Posit es
a3
timesI (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123) Posit es
a1 Posit es
a2 Posit es
a3
timesI (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
timesI (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a0
abssignum :: (PositF es) => Cl3 es -> (Cl3 es,Cl3 es)
abssignum :: forall (es :: ES). PositF es => Cl3 es -> (Cl3 es, Cl3 es)
abssignum Cl3 es
cl3 =
let R Posit es
m0 = Cl3 es -> Cl3 es
forall (es :: ES). PositF es => Cl3 es -> Cl3 es
absolute Cl3 es
cl3
in if Posit es
m0 Posit es -> Posit es -> Bool
forall a. Eq a => a -> a -> Bool
== Posit es
0
then (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0, Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0)
else (Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m0, Cl3 es
cl3 Cl3 es -> Cl3 es -> Cl3 es
forall a. Fractional a => a -> a -> a
/ Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m0)
absolute :: (PositF es) => Cl3 es -> Cl3 es
absolute :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
absolute (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a0)
absolute (V3 Posit es
a1 Posit es
a2 Posit es
a3) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es
rss3 Posit es
a1 Posit es
a2 Posit es
a3 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (BV Posit es
a23 Posit es
a31 Posit es
a12) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es
rss3 Posit es
a23 Posit es
a31 Posit es
a12 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a123)
absolute (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
reimMag Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
rss4 Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (C Posit es
a0 Posit es
a123) = let m :: Posit es
m = Posit es -> Posit es -> Posit es
forall (es :: ES). PositF es => Posit es -> Posit es -> Posit es
rss2 Posit es
a0 Posit es
a123 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = let mag0 :: Posit es
mag0 = Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es
rss3 (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23) (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23) (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)
m :: Posit es
m = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
mag0 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
rss4 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = let m :: Posit es
m = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall (es :: ES).
PositF es =>
Posit es -> Posit es -> Posit es -> Posit es -> Posit es
reimMag Posit es
a123 Posit es
a23 Posit es
a31 Posit es
a12 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
absolute (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = let mag0 :: Posit es
mag0 = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
m :: Posit es
m = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
mag0 in Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
m
rss2 :: (PositF es) => Posit es -> Posit es -> Posit es
Posit es
a0 Posit es
a123 = Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p
hypot2 Posit es
a0 Posit es
a123
rss3 :: (PositF es) => Posit es -> Posit es -> Posit es -> Posit es
Posit es
x Posit es
y Posit es
z = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
x Posit es
y Posit es
z
rss4 :: (PositF es) => Posit es -> Posit es -> Posit es -> Posit es -> Posit es
Posit es
t Posit es
x Posit es
y Posit es
z = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p -> p
hypot4 Posit es
t Posit es
x Posit es
y Posit es
z
#ifdef O_LIQUID
tol :: PositC es => Cl3 es
tol = R tol'
tol' :: Posit es
tol' = 0
#else
tol :: PositF es => Cl3 es
{-# INLINE tol #-}
tol :: forall (es :: ES). PositF es => Cl3 es
tol = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
forall (es :: ES). PositF es => Posit es
tol'
tol' :: PositF es => Posit es
{-# INLINE tol' #-}
tol' :: forall (es :: ES). PositF es => Posit es
tol' = Posit es
128 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
forall p. AltFloating p => p
machEps
#endif
bar :: PositC es => Cl3 es -> Cl3 es
bar :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
bar (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
bar (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
bar (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
bar (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
bar (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3)
bar (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
bar (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
a123
bar (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
bar (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3) Posit es
a123
bar (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) Posit es
a123
bar (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a1) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a2) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a3) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) Posit es
a123
dag :: PositC es => Cl3 es -> Cl3 es
dag :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
dag (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
dag (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
dag (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
dag (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
dag (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
dag (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
dag (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
dag (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12)
dag (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
dag (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
dag (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a23) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a31) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a12) (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
a123)
toR :: PositC es => Cl3 es -> Cl3 es
toR :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toR (R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
toR V3{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR BV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR I{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR (PV Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
toR (H Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
toR (C Posit es
a0 Posit es
_) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
toR BPV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR ODD{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR TPV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
0
toR (APS Posit es
a0 Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
toV3 :: PositC es => Cl3 es -> Cl3 es
toV3 :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toV3 R{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
toV3 BV{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 I{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 (PV Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
toV3 H{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 C{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
toV3 (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
toV3 TPV{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
0 Posit es
0 Posit es
0
toV3 (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
toBV :: PositC es => Cl3 es -> Cl3 es
toBV :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBV R{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV V3{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
toBV I{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV PV{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV (H Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
toBV C{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV (BPV Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
toBV ODD{} = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
0 Posit es
0 Posit es
0
toBV (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
toBV (APS Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
toI :: PositC es => Cl3 es -> Cl3 es
toI :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toI R{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI V3{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI BV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI (I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
toI PV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI H{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI (C Posit es
_ Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
toI BPV{} = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
0
toI (ODD Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
toI (TPV Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
toI (APS Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
toPV :: PositC es => Cl3 es -> Cl3 es
toPV :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toPV (R Posit es
a0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toPV (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3
toPV BV{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toPV I{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toPV (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
toPV (H Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toPV (C Posit es
a0 Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toPV (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3
toPV (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0
toPV TPV{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toPV (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
toH :: PositC es => Cl3 es -> Cl3 es
toH :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toH (R Posit es
a0) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toH V3{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
0 Posit es
0 Posit es
0
toH (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toH (I Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
0 Posit es
0 Posit es
0
toH (PV Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toH (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12
toH (C Posit es
a0 Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
0 Posit es
0 Posit es
0
toH (BPV Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toH ODD{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
0 Posit es
0 Posit es
0
toH (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toH (APS Posit es
a0 Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12
toC :: PositC es => Cl3 es -> Cl3 es
toC :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toC (R Posit es
a0) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
0
toC V3{} = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
0
toC BV{} = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
0
toC (I Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
a123
toC (PV Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
0
toC (H Posit es
a0 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
0
toC (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
a123
toC BPV{} = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
0
toC (ODD Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
a123
toC (TPV Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
0 Posit es
a123
toC (APS Posit es
a0 Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
a123
toBPV :: PositC es => Cl3 es -> Cl3 es
toBPV :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toBPV R{} = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toBPV (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0
toBPV (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toBPV I{} = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toBPV (PV Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0
toBPV (H Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toBPV C{} = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toBPV (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
toBPV (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0
toBPV (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12
toBPV (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
_) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
toODD :: PositC es => Cl3 es -> Cl3 es
toODD :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toODD R{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
0
toODD (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0
toODD BV{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
0
toODD (I Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toODD (PV Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0
toODD H{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
0
toODD (C Posit es
_ Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toODD (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0
toODD (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123
toODD (TPV Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toODD (APS Posit es
_ Posit es
a1 Posit es
a2 Posit es
a3 Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123
toTPV :: PositC es => Cl3 es -> Cl3 es
toTPV :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toTPV R{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toTPV V3{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toTPV (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toTPV (I Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toTPV PV{} = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
0
toTPV (H Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toTPV (C Posit es
_ Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toTPV (BPV Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toTPV (ODD Posit es
_ Posit es
_ Posit es
_ Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toTPV (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
toTPV (APS Posit es
_ Posit es
_ Posit es
_ Posit es
_ Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
toAPS :: PositC es => Cl3 es -> Cl3 es
toAPS :: forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toAPS (R Posit es
a0) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toAPS (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toAPS (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toAPS (I Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toAPS (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
0
toAPS (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toAPS (C Posit es
a0 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toAPS (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
0
toAPS (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
0 Posit es
0 Posit es
0 Posit es
a123
toAPS (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
0 Posit es
0 Posit es
0 Posit es
0 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
toAPS (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
recip' :: PositF es => Cl3 es -> Cl3 es
recip' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
recip' = Cl3 es -> Cl3 es
forall a. Num a => a -> a
negate(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
exp' :: PositF es => Cl3 es -> Cl3 es
exp' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
exp' = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp
log' :: PositF es => Cl3 es -> Cl3 es
log' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
log' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip
sqrt' :: PositF es => Cl3 es -> Cl3 es
sqrt' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sqrt' = (Cl3 es -> Cl3 es -> Cl3 es
forall a. Fractional a => a -> a -> a
/Cl3 es
2)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt
sin' :: PositF es => Cl3 es -> Cl3 es
sin' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sin' = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos
cos' :: PositF es => Cl3 es -> Cl3 es
cos' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
cos' = Cl3 es -> Cl3 es
forall a. Num a => a -> a
negate(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sin
tan' :: PositF es => Cl3 es -> Cl3 es
tan' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
tan' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cos
asin' :: PositF es => Cl3 es -> Cl3 es
asin' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
asin' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es
1Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
-)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
acos' :: PositF es => Cl3 es -> Cl3 es
acos' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
acos' = Cl3 es -> Cl3 es
forall a. Num a => a -> a
negate(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es
1Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
-)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
atan' :: PositF es => Cl3 es -> Cl3 es
atan' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
atan' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es
1Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
+)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
sinh' :: PositF es => Cl3 es -> Cl3 es
sinh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
sinh' = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cosh
cosh' :: PositF es => Cl3 es -> Cl3 es
cosh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
cosh' = Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sinh
tanh' :: PositF es => Cl3 es -> Cl3 es
tanh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
tanh' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
cosh
asinh' :: PositF es => Cl3 es -> Cl3 es
asinh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
asinh' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es
1Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
+)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
acosh' :: PositF es => Cl3 es -> Cl3 es
acosh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
acosh' Cl3 es
x = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall a b. (a -> b) -> a -> b
$ Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt (Cl3 es
x Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
- Cl3 es
1) Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
* Cl3 es -> Cl3 es
forall a. Floating a => a -> a
sqrt (Cl3 es
x Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
+ Cl3 es
1)
atanh' :: PositF es => Cl3 es -> Cl3 es
atanh' :: forall (es :: ES). PositF es => Cl3 es -> Cl3 es
atanh' = Cl3 es -> Cl3 es
forall a. Fractional a => a -> a
recip(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es
1Cl3 es -> Cl3 es -> Cl3 es
forall a. Num a => a -> a -> a
-)(Cl3 es -> Cl3 es) -> (Cl3 es -> Cl3 es) -> Cl3 es -> Cl3 es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Cl3 es -> Integer -> Cl3 es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
instance (PositC es1, PositC es2) => Convertible (Cl3 es1) (Cl3 es2) where
convert :: Cl3 es1 -> Cl3 es2
convert (R Posit es1
a0) = Posit es2 -> Cl3 es2
forall (es :: ES). PositC es => Posit es -> Cl3 es
R (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a0)
convert (V3 Posit es1
a1 Posit es1
a2 Posit es1
a3) = Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a1) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a2) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a3)
convert (BV Posit es1
a23 Posit es1
a31 Posit es1
a12) = Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a23) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a31) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a12)
convert (I Posit es1
a123) = Posit es2 -> Cl3 es2
forall (es :: ES). PositC es => Posit es -> Cl3 es
I (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a123)
convert (PV Posit es1
a0 Posit es1
a1 Posit es1
a2 Posit es1
a3) = Posit es2 -> Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a0) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a1) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a2) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a3)
convert (H Posit es1
a0 Posit es1
a23 Posit es1
a31 Posit es1
a12) = Posit es2 -> Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a0) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a23) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a31) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a12)
convert (C Posit es1
a0 Posit es1
a123) = Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a0) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a123)
convert (BPV Posit es1
a1 Posit es1
a2 Posit es1
a3 Posit es1
a23 Posit es1
a31 Posit es1
a12) = Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a1) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a2) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a3) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a23) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a31) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a12)
convert (ODD Posit es1
a1 Posit es1
a2 Posit es1
a3 Posit es1
a123) = Posit es2 -> Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a1) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a2) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a3) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a123)
convert (TPV Posit es1
a23 Posit es1
a31 Posit es1
a12 Posit es1
a123) = Posit es2 -> Posit es2 -> Posit es2 -> Posit es2 -> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a23) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a31) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a12) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a123)
convert (APS Posit es1
a0 Posit es1
a1 Posit es1
a2 Posit es1
a3 Posit es1
a23 Posit es1
a31 Posit es1
a12 Posit es1
a123) = Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Posit es2
-> Cl3 es2
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a0) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a1) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a2) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a3) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a23) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a31) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a12) (Posit es1 -> Posit es2
forall a b. Convertible a b => a -> b
convert Posit es1
a123)
#ifndef O_NO_STORABLE
instance PositC es => Storable (Cl3 es) where
sizeOf :: Cl3 es -> Int
sizeOf Cl3 es
_ = Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3 es -> Int
alignment Cl3 es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3 es) -> IO (Cl3 es)
peek Ptr (Cl3 es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
4)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
5)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
6)
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
7)
Cl3 es -> IO (Cl3 es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3 es -> IO (Cl3 es)) -> Cl3 es -> IO (Cl3 es)
forall a b. (a -> b) -> a -> b
$ Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3 es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3 es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3 es) -> Cl3 es -> IO ()
poke Ptr (Cl3 es)
ptr (Cl3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3 es -> Cl3 es
toAPS -> APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a0
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a3
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
4) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
5) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
6) Posit es
a12
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
7) Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3 es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3 es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke Ptr (Cl3 es)
_ Cl3 es
_ = String -> IO ()
forall a. HasCallStack => String -> a
error String
"Serious Issues with poke in Cl3.Storable"
data Cl3_R es where
Cl3_R :: (PositC es) => !(Posit es) -> Cl3_R es
toCl3_R :: PositC es => Cl3 es -> Cl3_R es
toCl3_R :: forall (es :: ES). PositC es => Cl3 es -> Cl3_R es
toCl3_R (R Posit es
a0) = Posit es -> Cl3_R es
forall (es :: ES). PositC es => Posit es -> Cl3_R es
Cl3_R Posit es
a0
toCl3_R Cl3 es
err = String -> Cl3_R es
forall a. HasCallStack => String -> a
error (String -> Cl3_R es) -> String -> Cl3_R es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not R to Cl3_R, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_R :: PositC es => Cl3_R es -> Cl3 es
fromCl3_R :: forall (es :: ES). PositC es => Cl3_R es -> Cl3 es
fromCl3_R (Cl3_R Posit es
a0) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R Posit es
a0
instance PositC es => Show (Cl3_R es) where
show :: Cl3_R es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_R es -> Cl3 es) -> Cl3_R es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_R es -> Cl3 es
forall (es :: ES). PositC es => Cl3_R es -> Cl3 es
fromCl3_R
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_R es) where
readPrec = toCl3_R <$> readPrec
#endif
instance PositC es => Storable (Cl3_R es) where
sizeOf :: Cl3_R es -> Int
sizeOf Cl3_R es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_R es -> Int
alignment Cl3_R es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_R es) -> IO (Cl3_R es)
peek Ptr (Cl3_R es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek Ptr (Posit es)
offset
Cl3_R es -> IO (Cl3_R es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_R es -> IO (Cl3_R es)) -> Cl3_R es -> IO (Cl3_R es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Cl3_R es
forall (es :: ES). PositC es => Posit es -> Cl3_R es
Cl3_R Posit es
a0
where
offset :: Ptr (Posit es)
offset = Ptr (Cl3_R es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_R es)
ptr :: Ptr (Posit es)
poke :: Ptr (Cl3_R es) -> Cl3_R es -> IO ()
poke Ptr (Cl3_R es)
ptr (Cl3_R Posit es
a0) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr (Posit es)
offset Posit es
a0
where
offset :: Ptr (Posit es)
offset = Ptr (Cl3_R es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_R es)
ptr :: Ptr (Posit es)
data Cl3_V3 es where
Cl3_V3 :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_V3 es
toCl3_V3 :: PositC es => Cl3 es -> Cl3_V3 es
toCl3_V3 :: forall (es :: ES). PositC es => Cl3 es -> Cl3_V3 es
toCl3_V3 (V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3_V3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3_V3 es
Cl3_V3 Posit es
a1 Posit es
a2 Posit es
a3
toCl3_V3 Cl3 es
err = String -> Cl3_V3 es
forall a. HasCallStack => String -> a
error (String -> Cl3_V3 es) -> String -> Cl3_V3 es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not V3 to Cl3_V3, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_V3 :: PositC es => Cl3_V3 es -> Cl3 es
fromCl3_V3 :: forall (es :: ES). PositC es => Cl3_V3 es -> Cl3 es
fromCl3_V3 (Cl3_V3 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 Posit es
a1 Posit es
a2 Posit es
a3
instance PositC es => Show (Cl3_V3 es) where
show :: Cl3_V3 es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_V3 es -> Cl3 es) -> Cl3_V3 es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_V3 es -> Cl3 es
forall (es :: ES). PositC es => Cl3_V3 es -> Cl3 es
fromCl3_V3
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_V3 es) where
readPrec = toCl3_V3 <$> readPrec
#endif
instance PositC es => Storable (Cl3_V3 es) where
sizeOf :: Cl3_V3 es -> Int
sizeOf Cl3_V3 es
_ = Int
3 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_V3 es -> Int
alignment Cl3_V3 es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_V3 es) -> IO (Cl3_V3 es)
peek Ptr (Cl3_V3 es)
ptr = do
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Cl3_V3 es -> IO (Cl3_V3 es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_V3 es -> IO (Cl3_V3 es)) -> Cl3_V3 es -> IO (Cl3_V3 es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Cl3_V3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3_V3 es
Cl3_V3 Posit es
a1 Posit es
a2 Posit es
a3
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_V3 es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_V3 es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_V3 es) -> Cl3_V3 es -> IO ()
poke Ptr (Cl3_V3 es)
ptr (Cl3_V3 Posit es
a1 Posit es
a2 Posit es
a3) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a3
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_V3 es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_V3 es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_BV es where
Cl3_BV :: (PositC es) => !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_BV es
toCl3_BV :: PositC es => Cl3 es -> Cl3_BV es
toCl3_BV :: forall (es :: ES). PositC es => Cl3 es -> Cl3_BV es
toCl3_BV (BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3_BV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3_BV es
Cl3_BV Posit es
a23 Posit es
a31 Posit es
a12
toCl3_BV Cl3 es
err = String -> Cl3_BV es
forall a. HasCallStack => String -> a
error (String -> Cl3_BV es) -> String -> Cl3_BV es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not BV to Cl3_BV, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_BV :: PositC es => Cl3_BV es -> Cl3 es
fromCl3_BV :: forall (es :: ES). PositC es => Cl3_BV es -> Cl3 es
fromCl3_BV (Cl3_BV Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV Posit es
a23 Posit es
a31 Posit es
a12
instance PositC es => Show (Cl3_BV es) where
show :: Cl3_BV es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_BV es -> Cl3 es) -> Cl3_BV es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_BV es -> Cl3 es
forall (es :: ES). PositC es => Cl3_BV es -> Cl3 es
fromCl3_BV
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_BV es) where
readPrec = toCl3_BV <$> readPrec
#endif
instance PositC es => Storable (Cl3_BV es) where
sizeOf :: Cl3_BV es -> Int
sizeOf Cl3_BV es
_ = Int
3 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_BV es -> Int
alignment Cl3_BV es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_BV es) -> IO (Cl3_BV es)
peek Ptr (Cl3_BV es)
ptr = do
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Cl3_BV es -> IO (Cl3_BV es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_BV es -> IO (Cl3_BV es)) -> Cl3_BV es -> IO (Cl3_BV es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Cl3_BV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3_BV es
Cl3_BV Posit es
a23 Posit es
a31 Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_BV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_BV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_BV es) -> Cl3_BV es -> IO ()
poke Ptr (Cl3_BV es)
ptr (Cl3_BV Posit es
a23 Posit es
a31 Posit es
a12) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_BV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_BV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_I es where
Cl3_I :: PositC es => !(Posit es) -> Cl3_I es
toCl3_I :: PositC es => Cl3 es -> Cl3_I es
toCl3_I :: forall (es :: ES). PositC es => Cl3 es -> Cl3_I es
toCl3_I (I Posit es
a123) = Posit es -> Cl3_I es
forall (es :: ES). PositC es => Posit es -> Cl3_I es
Cl3_I Posit es
a123
toCl3_I Cl3 es
err = String -> Cl3_I es
forall a. HasCallStack => String -> a
error (String -> Cl3_I es) -> String -> Cl3_I es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not R to Cl3_R, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_I :: PositC es => Cl3_I es -> Cl3 es
fromCl3_I :: forall (es :: ES). PositC es => Cl3_I es -> Cl3 es
fromCl3_I (Cl3_I Posit es
a123) = Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I Posit es
a123
instance PositC es => Show (Cl3_I es) where
show :: Cl3_I es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_I es -> Cl3 es) -> Cl3_I es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_I es -> Cl3 es
forall (es :: ES). PositC es => Cl3_I es -> Cl3 es
fromCl3_I
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_I es) where
readPrec = toCl3_I <$> readPrec
#endif
instance PositC es => Storable (Cl3_I es) where
sizeOf :: Cl3_I es -> Int
sizeOf Cl3_I es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_I es -> Int
alignment Cl3_I es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_I es) -> IO (Cl3_I es)
peek Ptr (Cl3_I es)
ptr = do
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek Ptr (Posit es)
offset
Cl3_I es -> IO (Cl3_I es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_I es -> IO (Cl3_I es)) -> Cl3_I es -> IO (Cl3_I es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Cl3_I es
forall (es :: ES). PositC es => Posit es -> Cl3_I es
Cl3_I Posit es
a123
where
offset :: Ptr (Posit es)
offset = Ptr (Cl3_I es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_I es)
ptr :: Ptr (Posit es)
poke :: Ptr (Cl3_I es) -> Cl3_I es -> IO ()
poke Ptr (Cl3_I es)
ptr (Cl3_I Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr (Posit es)
offset Posit es
a123
where
offset :: Ptr (Posit es)
offset = Ptr (Cl3_I es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_I es)
ptr :: Ptr (Posit es)
data Cl3_PV es where
Cl3_PV :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_PV es
toCl3_PV :: PositC es => Cl3 es -> Cl3_PV es
toCl3_PV :: forall (es :: ES). PositC es => Cl3 es -> Cl3_PV es
toCl3_PV (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3_PV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_PV es
Cl3_PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
toCl3_PV Cl3 es
err = String -> Cl3_PV es
forall a. HasCallStack => String -> a
error (String -> Cl3_PV es) -> String -> Cl3_PV es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not PV to Cl3_PV, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_PV :: PositC es => Cl3_PV es -> Cl3 es
fromCl3_PV :: forall (es :: ES). PositC es => Cl3_PV es -> Cl3 es
fromCl3_PV (Cl3_PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
instance PositC es => Show (Cl3_PV es) where
show :: Cl3_PV es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_PV es -> Cl3 es) -> Cl3_PV es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_PV es -> Cl3 es
forall (es :: ES). PositC es => Cl3_PV es -> Cl3 es
fromCl3_PV
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_PV es) where
readPrec = toCl3_PV <$> readPrec
#endif
instance PositC es => Storable (Cl3_PV es) where
sizeOf :: Cl3_PV es -> Int
sizeOf Cl3_PV es
_ = Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_PV es -> Int
alignment Cl3_PV es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_PV es) -> IO (Cl3_PV es)
peek Ptr (Cl3_PV es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
4)
Cl3_PV es -> IO (Cl3_PV es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_PV es -> IO (Cl3_PV es)) -> Cl3_PV es -> IO (Cl3_PV es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Posit es -> Cl3_PV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_PV es
Cl3_PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_PV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_PV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_PV es) -> Cl3_PV es -> IO ()
poke Ptr (Cl3_PV es)
ptr (Cl3_PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a0
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a3
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_PV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_PV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_H es where
Cl3_H :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_H es
toCl3_H :: PositC es => Cl3 es -> Cl3_H es
toCl3_H :: forall (es :: ES). PositC es => Cl3 es -> Cl3_H es
toCl3_H (H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3_H es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_H es
Cl3_H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12
toCl3_H Cl3 es
err = String -> Cl3_H es
forall a. HasCallStack => String -> a
error (String -> Cl3_H es) -> String -> Cl3_H es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not H to Cl3_H, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_H :: PositC es => Cl3_H es -> Cl3 es
fromCl3_H :: forall (es :: ES). PositC es => Cl3_H es -> Cl3 es
fromCl3_H (Cl3_H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12
instance PositC es => Show (Cl3_H es) where
show :: Cl3_H es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_H es -> Cl3 es) -> Cl3_H es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_H es -> Cl3 es
forall (es :: ES). PositC es => Cl3_H es -> Cl3 es
fromCl3_H
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_H es) where
readPrec = toCl3_H <$> readPrec
#endif
instance PositC es => Storable (Cl3_H es) where
sizeOf :: Cl3_H es -> Int
sizeOf Cl3_H es
_ = Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_H es -> Int
alignment Cl3_H es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_H es) -> IO (Cl3_H es)
peek Ptr (Cl3_H es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Cl3_H es -> IO (Cl3_H es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_H es -> IO (Cl3_H es)) -> Cl3_H es -> IO (Cl3_H es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Posit es -> Cl3_H es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_H es
Cl3_H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_H es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_H es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_H es) -> Cl3_H es -> IO ()
poke Ptr (Cl3_H es)
ptr (Cl3_H Posit es
a0 Posit es
a23 Posit es
a31 Posit es
a12) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a0
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_H es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_H es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_C es where
Cl3_C :: PositC es => !(Posit es) -> !(Posit es) -> Cl3_C es
toCl3_C :: PositC es => Cl3 es -> Cl3_C es
toCl3_C :: forall (es :: ES). PositC es => Cl3 es -> Cl3_C es
toCl3_C (C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3_C es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3_C es
Cl3_C Posit es
a0 Posit es
a123
toCl3_C Cl3 es
err = String -> Cl3_C es
forall a. HasCallStack => String -> a
error (String -> Cl3_C es) -> String -> Cl3_C es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not C to Cl3_C, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_C :: PositC es => Cl3_C es -> Cl3 es
fromCl3_C :: forall (es :: ES). PositC es => Cl3_C es -> Cl3 es
fromCl3_C (Cl3_C Posit es
a0 Posit es
a123) = Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C Posit es
a0 Posit es
a123
instance PositC es => Show (Cl3_C es) where
show :: Cl3_C es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String) -> (Cl3_C es -> Cl3 es) -> Cl3_C es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_C es -> Cl3 es
forall (es :: ES). PositC es => Cl3_C es -> Cl3 es
fromCl3_C
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_C es) where
readPrec = toCl3_C <$> readPrec
#endif
instance PositC es => Storable (Cl3_C es) where
sizeOf :: Cl3_C es -> Int
sizeOf Cl3_C es
_ = Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_C es -> Int
alignment Cl3_C es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_C es) -> IO (Cl3_C es)
peek Ptr (Cl3_C es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Cl3_C es -> IO (Cl3_C es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_C es -> IO (Cl3_C es)) -> Cl3_C es -> IO (Cl3_C es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Cl3_C es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3_C es
Cl3_C Posit es
a0 Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_C es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_C es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_C es) -> Cl3_C es -> IO ()
poke Ptr (Cl3_C es)
ptr (Cl3_C Posit es
a0 Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a0
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_C es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_C es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_BPV es where
Cl3_BPV :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_BPV es
toCl3_BPV :: PositC es => Cl3 es -> Cl3_BPV es
toCl3_BPV :: forall (es :: ES). PositC es => Cl3 es -> Cl3_BPV es
toCl3_BPV (BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_BPV es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_BPV es
Cl3_BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
toCl3_BPV Cl3 es
err = String -> Cl3_BPV es
forall a. HasCallStack => String -> a
error (String -> Cl3_BPV es) -> String -> Cl3_BPV es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not BPV to Cl3_BPV, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_BPV :: PositC es => Cl3_BPV es -> Cl3 es
fromCl3_BPV :: forall (es :: ES). PositC es => Cl3_BPV es -> Cl3 es
fromCl3_BPV (Cl3_BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
instance PositC es => Show (Cl3_BPV es) where
show :: Cl3_BPV es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String)
-> (Cl3_BPV es -> Cl3 es) -> Cl3_BPV es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_BPV es -> Cl3 es
forall (es :: ES). PositC es => Cl3_BPV es -> Cl3 es
fromCl3_BPV
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_BPV es) where
readPrec = toCl3_BPV <$> readPrec
#endif
instance PositC es => Storable (Cl3_BPV es) where
sizeOf :: Cl3_BPV es -> Int
sizeOf Cl3_BPV es
_ = Int
6 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_BPV es -> Int
alignment Cl3_BPV es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_BPV es) -> IO (Cl3_BPV es)
peek Ptr (Cl3_BPV es)
ptr = do
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
4)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
5)
Cl3_BPV es -> IO (Cl3_BPV es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_BPV es -> IO (Cl3_BPV es)) -> Cl3_BPV es -> IO (Cl3_BPV es)
forall a b. (a -> b) -> a -> b
$ Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_BPV es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_BPV es
Cl3_BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_BPV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_BPV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_BPV es) -> Cl3_BPV es -> IO ()
poke Ptr (Cl3_BPV es)
ptr (Cl3_BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a3
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
4) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
5) Posit es
a12
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_BPV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_BPV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_ODD es where
Cl3_ODD :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_ODD es
toCl3_ODD :: PositC es => Cl3 es -> Cl3_ODD es
toCl3_ODD :: forall (es :: ES). PositC es => Cl3 es -> Cl3_ODD es
toCl3_ODD (ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3_ODD es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_ODD es
Cl3_ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123
toCl3_ODD Cl3 es
err = String -> Cl3_ODD es
forall a. HasCallStack => String -> a
error (String -> Cl3_ODD es) -> String -> Cl3_ODD es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not ODD to Cl3_ODD, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_ODD :: PositC es => Cl3_ODD es -> Cl3 es
fromCl3_ODD :: forall (es :: ES). PositC es => Cl3_ODD es -> Cl3 es
fromCl3_ODD (Cl3_ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123
instance PositC es =>Show (Cl3_ODD es) where
show :: Cl3_ODD es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String)
-> (Cl3_ODD es -> Cl3 es) -> Cl3_ODD es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_ODD es -> Cl3 es
forall (es :: ES). PositC es => Cl3_ODD es -> Cl3 es
fromCl3_ODD
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_ODD es) where
readPrec = toCl3_ODD <$> readPrec
#endif
instance PositC es => Storable (Cl3_ODD es) where
sizeOf :: Cl3_ODD es -> Int
sizeOf Cl3_ODD es
_ = Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_ODD es -> Int
alignment Cl3_ODD es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_ODD es) -> IO (Cl3_ODD es)
peek Ptr (Cl3_ODD es)
ptr = do
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Cl3_ODD es -> IO (Cl3_ODD es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_ODD es -> IO (Cl3_ODD es)) -> Cl3_ODD es -> IO (Cl3_ODD es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Posit es -> Cl3_ODD es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_ODD es
Cl3_ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_ODD es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_ODD es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_ODD es) -> Cl3_ODD es -> IO ()
poke Ptr (Cl3_ODD es)
ptr (Cl3_ODD Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a3
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_ODD es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_ODD es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_TPV es where
Cl3_TPV :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_TPV es
toCl3_TPV :: PositC es => Cl3 es -> Cl3_TPV es
toCl3_TPV :: forall (es :: ES). PositC es => Cl3 es -> Cl3_TPV es
toCl3_TPV (TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3_TPV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_TPV es
Cl3_TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
toCl3_TPV Cl3 es
err = String -> Cl3_TPV es
forall a. HasCallStack => String -> a
error (String -> Cl3_TPV es) -> String -> Cl3_TPV es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not TPV to Cl3_TPV, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_TPV :: PositC es => Cl3_TPV es -> Cl3 es
fromCl3_TPV :: forall (es :: ES). PositC es => Cl3_TPV es -> Cl3 es
fromCl3_TPV (Cl3_TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
instance PositC es => Show (Cl3_TPV es) where
show :: Cl3_TPV es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String)
-> (Cl3_TPV es -> Cl3 es) -> Cl3_TPV es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_TPV es -> Cl3 es
forall (es :: ES). PositC es => Cl3_TPV es -> Cl3 es
fromCl3_TPV
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_TPV es) where
readPrec = toCl3_TPV <$> readPrec
#endif
instance PositC es => Storable (Cl3_TPV es) where
sizeOf :: Cl3_TPV es -> Int
sizeOf Cl3_TPV es
_ = Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_TPV es -> Int
alignment Cl3_TPV es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_TPV es) -> IO (Cl3_TPV es)
peek Ptr (Cl3_TPV es)
ptr = do
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Cl3_TPV es -> IO (Cl3_TPV es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_TPV es -> IO (Cl3_TPV es)) -> Cl3_TPV es -> IO (Cl3_TPV es)
forall a b. (a -> b) -> a -> b
$ Posit es -> Posit es -> Posit es -> Posit es -> Cl3_TPV es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3_TPV es
Cl3_TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_TPV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_TPV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_TPV es) -> Cl3_TPV es -> IO ()
poke Ptr (Cl3_TPV es)
ptr (Cl3_TPV Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a12
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_TPV es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_TPV es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
data Cl3_APS es where
Cl3_APS :: PositC es => !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> !(Posit es) -> Cl3_APS es
toCl3_APS :: PositC es => Cl3 es -> Cl3_APS es
toCl3_APS :: forall (es :: ES). PositC es => Cl3 es -> Cl3_APS es
toCl3_APS (APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_APS es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_APS es
Cl3_APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
toCl3_APS Cl3 es
err = String -> Cl3_APS es
forall a. HasCallStack => String -> a
error (String -> Cl3_APS es) -> String -> Cl3_APS es
forall a b. (a -> b) -> a -> b
$ String
"Please don't try and cast something that's not APS to Cl3_APS, Got: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Cl3 es -> String
forall a. Show a => a -> String
show Cl3 es
err
fromCl3_APS :: PositC es => Cl3_APS es -> Cl3 es
fromCl3_APS :: forall (es :: ES). PositC es => Cl3_APS es -> Cl3 es
fromCl3_APS (Cl3_APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
instance PositC es => Show (Cl3_APS es) where
show :: Cl3_APS es -> String
show = Cl3 es -> String
forall a. Show a => a -> String
show(Cl3 es -> String)
-> (Cl3_APS es -> Cl3 es) -> Cl3_APS es -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Cl3_APS es -> Cl3 es
forall (es :: ES). PositC es => Cl3_APS es -> Cl3 es
fromCl3_APS
#ifndef O_NO_DERIVED
instance PositC es => Read (Cl3_APS es) where
readPrec = toCl3_APS <$> readPrec
#endif
instance PositC es => Storable (Cl3_APS es) where
sizeOf :: Cl3_APS es -> Int
sizeOf Cl3_APS es
_ = Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
alignment :: Cl3_APS es -> Int
alignment Cl3_APS es
_ = Posit es -> Int
forall a. Storable a => a -> Int
sizeOf (Posit es
forall a. HasCallStack => a
undefined :: Posit es)
peek :: Ptr (Cl3_APS es) -> IO (Cl3_APS es)
peek Ptr (Cl3_APS es)
ptr = do
Posit es
a0 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
0)
Posit es
a1 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
1)
Posit es
a2 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
2)
Posit es
a3 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
3)
Posit es
a23 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
4)
Posit es
a31 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
5)
Posit es
a12 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
6)
Posit es
a123 <- Ptr (Posit es) -> IO (Posit es)
forall a. Storable a => Ptr a -> IO a
peek (Int -> Ptr (Posit es)
offset Int
7)
Cl3_APS es -> IO (Cl3_APS es)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Cl3_APS es -> IO (Cl3_APS es)) -> Cl3_APS es -> IO (Cl3_APS es)
forall a b. (a -> b) -> a -> b
$ Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_APS es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3_APS es
Cl3_APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_APS es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_APS es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
poke :: Ptr (Cl3_APS es) -> Cl3_APS es -> IO ()
poke Ptr (Cl3_APS es)
ptr (Cl3_APS Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12 Posit es
a123) = do
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
0) Posit es
a0
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
1) Posit es
a1
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
2) Posit es
a2
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
3) Posit es
a3
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
4) Posit es
a23
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
5) Posit es
a31
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
6) Posit es
a12
Ptr (Posit es) -> Posit es -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Int -> Ptr (Posit es)
offset Int
7) Posit es
a123
where
offset :: Int -> Ptr (Posit es)
offset Int
i = (Ptr (Cl3_APS es) -> Ptr (Posit es)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Cl3_APS es)
ptr :: Ptr (Posit es)) Ptr (Posit es) -> Int -> Ptr (Posit es)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
* Natural -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall (es :: ES). PositC es => Natural
nBytes @es))
#endif
#ifndef O_NO_RANDOM
instance PositF es => Random (Cl3 es) where
randomR :: forall g. RandomGen g => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
randomR (Cl3 es
minAbs,Cl3 es
maxAbs) g
g =
case (Int, Int) -> g -> (Int, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Int, Int) -> g -> (Int, g)
randomR (ConCl3 -> Int
forall a. Enum a => a -> Int
fromEnum (ConCl3
forall a. Bounded a => a
minBound :: ConCl3), ConCl3 -> Int
forall a. Enum a => a -> Int
fromEnum (ConCl3
forall a. Bounded a => a
maxBound :: ConCl3)) g
g of
(Int
r, g
g') -> case Int -> ConCl3
forall a. Enum a => Int -> a
toEnum Int
r of
ConCl3
ConR -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConV3 -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeV3 (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConBV -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBV (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConI -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeI (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConPV -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangePV (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConH -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeH (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConC -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeC (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConBPV -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBPV (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConODD -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeODD (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConTPV -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeTPV (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConAPS -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeAPS (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConProj -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeProjector (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConNilpotent -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeNilpotent (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
ConCl3
ConUnitary -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeUnitary (Cl3 es
minAbs,Cl3 es
maxAbs) g
g'
random :: forall g. RandomGen g => g -> (Cl3 es, g)
random = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
randomR (Cl3 es
0,Cl3 es
1)
data ConCl3 = ConR
| ConV3
| ConBV
| ConI
| ConPV
| ConH
| ConC
| ConBPV
| ConODD
| ConTPV
| ConAPS
| ConProj
| ConNilpotent
| ConUnitary
deriving (ConCl3
ConCl3 -> ConCl3 -> Bounded ConCl3
forall a. a -> a -> Bounded a
$cminBound :: ConCl3
minBound :: ConCl3
$cmaxBound :: ConCl3
maxBound :: ConCl3
Bounded, Int -> ConCl3
ConCl3 -> Int
ConCl3 -> [ConCl3]
ConCl3 -> ConCl3
ConCl3 -> ConCl3 -> [ConCl3]
ConCl3 -> ConCl3 -> ConCl3 -> [ConCl3]
(ConCl3 -> ConCl3)
-> (ConCl3 -> ConCl3)
-> (Int -> ConCl3)
-> (ConCl3 -> Int)
-> (ConCl3 -> [ConCl3])
-> (ConCl3 -> ConCl3 -> [ConCl3])
-> (ConCl3 -> ConCl3 -> [ConCl3])
-> (ConCl3 -> ConCl3 -> ConCl3 -> [ConCl3])
-> Enum ConCl3
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: ConCl3 -> ConCl3
succ :: ConCl3 -> ConCl3
$cpred :: ConCl3 -> ConCl3
pred :: ConCl3 -> ConCl3
$ctoEnum :: Int -> ConCl3
toEnum :: Int -> ConCl3
$cfromEnum :: ConCl3 -> Int
fromEnum :: ConCl3 -> Int
$cenumFrom :: ConCl3 -> [ConCl3]
enumFrom :: ConCl3 -> [ConCl3]
$cenumFromThen :: ConCl3 -> ConCl3 -> [ConCl3]
enumFromThen :: ConCl3 -> ConCl3 -> [ConCl3]
$cenumFromTo :: ConCl3 -> ConCl3 -> [ConCl3]
enumFromTo :: ConCl3 -> ConCl3 -> [ConCl3]
$cenumFromThenTo :: ConCl3 -> ConCl3 -> ConCl3 -> [ConCl3]
enumFromThenTo :: ConCl3 -> ConCl3 -> ConCl3 -> [ConCl3]
Enum)
randR :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randR :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randR = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
0,Cl3 es
1)
rangeR :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR = (Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
scalarHelper Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
R
randV3 :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeV3 (Cl3 es
0,Cl3 es
1)
rangeV3 :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeV3 :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeV3 = (Posit es -> Posit es -> Posit es -> Cl3 es)
-> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Posit es -> Posit es -> Cl3 es)
-> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
vectorHelper Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3
randBV :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBV (Cl3 es
0,Cl3 es
1)
rangeBV :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBV :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBV = (Posit es -> Posit es -> Posit es -> Cl3 es)
-> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Posit es -> Posit es -> Cl3 es)
-> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
vectorHelper Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
BV
randI :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randI :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randI = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeI (Cl3 es
0,Cl3 es
1)
rangeI :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeI :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeI = (Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
scalarHelper Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Cl3 es
I
randPV :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randPV :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randPV = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangePV (Cl3 es
0,Cl3 es
1)
rangePV :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangePV :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangePV (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(R Posit es
a0, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randR g
g'
(V3 Posit es
a1 Posit es
a2 Posit es
a3, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 g
g''
sumsqs :: Posit es
sumsqs = Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a0 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
sumsqs
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
sumsqs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3), g
g''')
randH :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randH :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randH = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeH (Cl3 es
0,Cl3 es
1)
rangeH :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeH :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeH (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(R Posit es
a0, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randR g
g'
(BV Posit es
a23 Posit es
a31 Posit es
a12, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV g
g''
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
H (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12), g
g''')
randC :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randC :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randC = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeC (Cl3 es
0,Cl3 es
1)
rangeC :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeC :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeC (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(Posit es
phi, g
g'') = (Posit es, Posit es) -> g -> (Posit es, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Posit es, Posit es) -> g -> (Posit es, g)
randomR (Posit es
0, Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
forall a. Floating a => a
pi) g
g'
in (Posit es -> Posit es -> Cl3 es
forall (es :: ES). PositC es => Posit es -> Posit es -> Cl3 es
C (Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
phi) (Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
phi), g
g'')
randBPV :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBPV :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBPV = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBPV (Cl3 es
0,Cl3 es
1)
rangeBPV :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBPV :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeBPV (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(V3 Posit es
a1 Posit es
a2 Posit es
a3, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 g
g'
(BV Posit es
a23 Posit es
a31 Posit es
a12, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV g
g''
x :: Posit es
x = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12), g
g''')
randODD :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randODD :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randODD = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeODD (Cl3 es
0,Cl3 es
1)
rangeODD :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeODD :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeODD (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(V3 Posit es
a1 Posit es
a2 Posit es
a3, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 g
g'
(I Posit es
a123, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randI g
g''
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
ODD (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123), g
g''')
randTPV :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randTPV :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randTPV = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeTPV (Cl3 es
0,Cl3 es
1)
rangeTPV :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeTPV :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeTPV (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(BV Posit es
a23 Posit es
a31 Posit es
a12, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV g
g'
(I Posit es
a123, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randI g
g''
sumsqs :: Posit es
sumsqs = Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
x :: Posit es
x = Posit es -> Posit es
forall a. Num a => a -> a
abs Posit es
a123 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sqrt Posit es
sumsqs
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
sumsqs Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
TPV (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123), g
g''')
randAPS :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randAPS :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randAPS = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeAPS (Cl3 es
0,Cl3 es
1)
rangeAPS :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeAPS :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeAPS (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
scale, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(C Posit es
a0 Posit es
a123, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randC g
g'
(V3 Posit es
a1 Posit es
a2 Posit es
a3, g
g''') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randV3 g
g''
(BV Posit es
a23 Posit es
a31 Posit es
a12, g
g'v) = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randBV g
g'''
x :: Posit es
x = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a1 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a0Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a3 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a12)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ (Posit es
a1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a31 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
- Posit es
a2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a23)Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2
invMag :: Posit es
invMag = Posit es -> Posit es
forall a. Fractional a => a -> a
recip(Posit es -> Posit es)
-> (Posit es -> Posit es) -> Posit es -> Posit es
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es -> Posit es) -> Posit es -> Posit es
forall a b. (a -> b) -> a -> b
$ Posit es
a0Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a1Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a2Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a3Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a23Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a31Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a12Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
a123Posit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
+ Posit es
x
mag :: Posit es
mag = Posit es
scale Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
invMag
in (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
APS (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a123), g
g'v)
randUnitV3 :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitV3 :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitV3 g
g =
let (Posit es
theta, g
g') = (Posit es, Posit es) -> g -> (Posit es, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Posit es, Posit es) -> g -> (Posit es, g)
randomR (Posit es
0,Posit es
2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
forall a. Floating a => a
pi) g
g
(Posit es
u, g
g'') = (Posit es, Posit es) -> g -> (Posit es, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Posit es, Posit es) -> g -> (Posit es, g)
randomR (-Posit es
1,Posit es
1) g
g'
semicircle :: Posit es
semicircle = Posit es -> Posit es
forall a. Floating a => a -> a
sqrt (Posit es
1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
-Posit es
uPosit es -> Integer -> Posit es
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
2)
in (Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Cl3 es
V3 (Posit es
semicircle Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
cos Posit es
theta) (Posit es
semicircle Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es -> Posit es
forall a. Floating a => a -> a
sin Posit es
theta) Posit es
u, g
g'')
randProjector :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randProjector :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randProjector g
g =
let (V3 Posit es
a1 Posit es
a2 Posit es
a3, g
g') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitV3 g
g
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV Posit es
0.5 (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
0.5 Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3), g
g')
rangeProjector :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeProjector :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeProjector (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
mag, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randProjector g
g'
in (Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
forall (es :: ES).
PositC es =>
Posit es -> Posit es -> Posit es -> Posit es -> Cl3 es
PV (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a0) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3), g
g'')
randNilpotent :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randNilpotent :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randNilpotent g
g =
let (PV Posit es
a0 Posit es
a1 Posit es
a2 Posit es
a3, g
g') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randProjector g
g
(V3 Posit es
b1 Posit es
b2 Posit es
b3, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitV3 g
g'
c1 :: Posit es
c1 = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
a2 Posit es
b3 Posit es
a3 Posit es
b2
c2 :: Posit es
c2 = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
a3 Posit es
b1 Posit es
a1 Posit es
b3
c3 :: Posit es
c3 = Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
a1 Posit es
b2 Posit es
a2 Posit es
b1
mag :: Posit es
mag = Posit es -> Posit es -> Posit es -> Posit es
forall p. AltFloating p => p -> p -> p -> p
hypot3 Posit es
c1 Posit es
c2 Posit es
c3
d1 :: Posit es
d1 = Posit es
c1 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag
d2 :: Posit es
d2 = Posit es
c2 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag
d3 :: Posit es
d3 = Posit es
c3 Posit es -> Posit es -> Posit es
forall a. Fractional a => a -> a -> a
/ Posit es
mag
in (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
d1Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0) (Posit es
d2Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0) (Posit es
d3Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
*Posit es
a0) (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
d2 Posit es
a3 Posit es
d3 Posit es
a2) (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
d3 Posit es
a1 Posit es
d1 Posit es
a3) (Posit es -> Posit es -> Posit es -> Posit es -> Posit es
forall a. FusedOps a => a -> a -> a -> a -> a
fmms Posit es
d1 Posit es
a2 Posit es
d2 Posit es
a1), g
g'')
rangeNilpotent :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeNilpotent :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeNilpotent (Cl3 es
lo, Cl3 es
hi) g
g =
let (R Posit es
mag, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeR (Cl3 es
lo, Cl3 es
hi) g
g
(BPV Posit es
a1 Posit es
a2 Posit es
a3 Posit es
a23 Posit es
a31 Posit es
a12, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randNilpotent g
g'
in (Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
forall (es :: ES).
PositC es =>
Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Posit es
-> Cl3 es
BPV (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a1) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a2) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a3) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a23) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a31) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
a12), g
g'')
randUnitary :: (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitary :: forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitary g
g =
let (Cl3 es
tpv,g
g') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randTPV g
g
in (Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp Cl3 es
tpv,g
g')
rangeUnitary :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeUnitary :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeUnitary (Cl3 es
lo, Cl3 es
hi) g
g =
let (Cl3 es
tpv, g
g') = (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
rangeTPV (Cl3 es
lo, Cl3 es
hi) g
g
in (Cl3 es -> Cl3 es
forall a. Floating a => a -> a
exp Cl3 es
tpv, g
g')
magHelper :: (PositF es, RandomGen g) => (Cl3 es, Cl3 es) -> g -> (Posit es, g)
magHelper :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Posit es, g)
magHelper (Cl3 es
lo, Cl3 es
hi) g
g =
let R Posit es
lo' = Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
lo
R Posit es
hi' = Cl3 es -> Cl3 es
forall a. Num a => a -> a
abs Cl3 es
hi
in (Posit es, Posit es) -> g -> (Posit es, g)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
forall g. RandomGen g => (Posit es, Posit es) -> g -> (Posit es, g)
randomR (Posit es
lo', Posit es
hi') g
g
scalarHelper :: (PositF es, RandomGen g) => (Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
scalarHelper :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
scalarHelper Posit es -> Cl3 es
con (Cl3 es, Cl3 es)
rng g
g =
let (Posit es
mag, g
g') = (Cl3 es, Cl3 es) -> g -> (Posit es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Posit es, g)
magHelper (Cl3 es, Cl3 es)
rng g
g
(Bool
sign, g
g'') = g -> (Bool, g)
forall a g. (Random a, RandomGen g) => g -> (a, g)
forall g. RandomGen g => g -> (Bool, g)
random g
g'
in if Bool
sign
then (Posit es -> Cl3 es
con Posit es
mag, g
g'')
else (Posit es -> Cl3 es
con (Posit es -> Posit es
forall a. Num a => a -> a
negate Posit es
mag), g
g'')
vectorHelper :: (PositF es, RandomGen g) => (Posit es -> Posit es -> Posit es -> Cl3 es) -> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
vectorHelper :: forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Posit es -> Posit es -> Posit es -> Cl3 es)
-> (Cl3 es, Cl3 es) -> g -> (Cl3 es, g)
vectorHelper Posit es -> Posit es -> Posit es -> Cl3 es
con (Cl3 es, Cl3 es)
rng g
g =
let (Posit es
mag, g
g') = (Cl3 es, Cl3 es) -> g -> (Posit es, g)
forall (es :: ES) g.
(PositF es, RandomGen g) =>
(Cl3 es, Cl3 es) -> g -> (Posit es, g)
magHelper (Cl3 es, Cl3 es)
rng g
g
(V3 Posit es
x Posit es
y Posit es
z, g
g'') = g -> (Cl3 es, g)
forall (es :: ES) g. (PositF es, RandomGen g) => g -> (Cl3 es, g)
randUnitV3 g
g'
in (Posit es -> Posit es -> Posit es -> Cl3 es
con (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
x) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
y) (Posit es
mag Posit es -> Posit es -> Posit es
forall a. Num a => a -> a -> a
* Posit es
z), g
g'')
#endif