Copyright | (c) OleksandrZhabenko 2020 |
---|---|

License | MIT |

Stability | Experimental |

Safe Haskell | None |

Language | Haskell2010 |

Maintainer : olexandr543@yahoo.com

Some special functions to work with Vector (with zip).

## Synopsis

- normFst :: (Fractional a, Ord a) => Vector (a, b) -> IO (Vector (a, b))
- normSnd :: (Fractional b, Ord b) => Vector (a, b) -> IO (Vector (a, b))
- evalFstFV :: (Fractional a, Ord a) => (a -> b) -> Vector a -> IO (Vector ((a, b), (a, b)))
- evalFstFVM :: (Fractional a, Ord a) => (a -> IO b) -> Vector a -> IO (Vector ((a, b), (a, b)))
- evalSndFV :: (Fractional b, Ord b) => (a -> b) -> Vector a -> IO (Vector ((a, b), (a, b)))
- evalSndFVM :: (Fractional b, Ord b) => (a -> IO b) -> Vector a -> IO (Vector ((a, b), (a, b)))
- double42Float4 :: ((Double, Double), (Double, Double)) -> ((Float, Float), (Float, Float))
- float42Double4 :: ((Float, Float), (Float, Float)) -> ((Double, Double), (Double, Double))

# Documentation

normFst :: (Fractional a, Ord a) => Vector (a, b) -> IO (Vector (a, b)) Source #

Norms a tuples in a `Vector`

by their first elements so that the greatest by an absolute value first element is equal to 1 (or -1). If all the first
elements are zeros then prints a warning message and exits successfully.

normSnd :: (Fractional b, Ord b) => Vector (a, b) -> IO (Vector (a, b)) Source #

Norms a tuples in a `Vector`

by their second elements so that the greatest by an absolute value second element is equal to 1 (or -1). If all the second
elements are zeros then prints a warning message and exits successfully.

evalFstFV :: (Fractional a, Ord a) => (a -> b) -> Vector a -> IO (Vector ((a, b), (a, b))) Source #

A special function transformation to obtain the resulting `Vector`

so that its first elements in the inner tuples are in a special way
normed to 1 (or -1) by `normFst`

and the inner tuples are sequenced one by another as a 2D points of the generating function `f :: a -> b`

.
To obtain non-empty result the given second argument must have at least two elements.

evalFstFVM :: (Fractional a, Ord a) => (a -> IO b) -> Vector a -> IO (Vector ((a, b), (a, b))) Source #

The same as `evalFstFV`

but uses a monadic IO function f.

evalSndFV :: (Fractional b, Ord b) => (a -> b) -> Vector a -> IO (Vector ((a, b), (a, b))) Source #

A special function transformation to obtain the resulting `Vector`

so that its second elements in the inner tuples are in a special way
normed to 1 (or -1) by `normSnd`

and the inner tuples are sequenced one by another as a 2D points of the generating function `f :: a -> b`

.
To obtain non-empty result the given second argument must have at least two elements. Is similar to `evalFstFV`

.

evalSndFVM :: (Fractional b, Ord b) => (a -> IO b) -> Vector a -> IO (Vector ((a, b), (a, b))) Source #

The same as `evalSndFV`

but uses a monadic IO function f.