MyNixOS website logo
Description

Typesafe library for linear algebra.

Please see the README on GitHub at https://github.com/JuniorGarbageCollector/QLinear

QLinear

QLinear is type safe library for linear algebra based on "macro-constructors"

Constructors:

  • matrix

    [matrix| a b ; c d |] builds matrix 2x2[ [a, b], [c, d] ]

    Example:

    [matrix| 1 2; 3 4 |] ~+~ [matrix| 2 3; 4 5 |] == [matrix| 3 5; 7 9 |] 
    

    Also you can't, for example, add two matrix with different size.

    [matrix| 1 2; 3 4 |] ~+~ [matrix| 1 2 3; 4 5 6; 7 8 9 |] -- will not be compiled
    
  • vector

    [vector| a b c d |] builds matrix 4x1[ [a], [b], [c], [d] ]

  • operator

    [operator| (x, y) => (y, x) |] builds matrix 2x2 of operator [ [0, 1], [1, 0] ] that swaps coodrinates
    [operator| (x, y) => (2 * x, y) |] builds matrix 2x2 of operator [ [2, 0], [0, 1] ] that doubles x coordinate

    Example:

    [operator| (x, y) => (3 * y, x / 2) |] ~*~ [vector| 2 8 |] == [vector| 24 1 |]
    

Syntax:

  • matrix: val11 val12 .. val1n; val21 val22 .. val2n; ..; valm1 valm2 .. valmn
  • vector: val1 val2 .. valn
  • operator: (var1, var2, .., varn) => (exp1, exp2, .., expn)
    where
    • val is number literal, variable or any Haskell expression between ( and )
    • var is Haskell variable
    • exp is any Haskell expression

Also there are basic operations as determinant, transposition, etc.

Metadata

Version

0.1.2.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows